MySQL 触发器将字段默认为自动生成的 ID 的值
在 MySQL 中,可以创建触发器来执行特定操作在修改之前或之后对表数据进行的操作。一种常见的用例是在插入时将字段保留为空的情况下将字段默认为自动生成的主键 (ID) 的值。
问题陈述:
为了实现这一点,我们考虑一个包含三列的表:id(主键)、group_id(整数)和 value(varchar)。目标是在记录插入时具有以下行为:
触发器实现:
虽然希望在单个语句或触发器中执行此操作,但 MySQL 的限制阻止了它。一种解决方法是利用两步方法:
CREATE TRIGGER MyTrigger BEFORE INSERT ON MyTable FOR EACH ROW BEGIN SET NEW.group_id = COALESCE(NEW.group_id, NEW.id); END
INSERT INTO MyTable (group_id, value) VALUES (NULL, 'a'); UPDATE MyTable SET group_id = COALESCE(group_id, id) WHERE id = LAST_INSERT_ID();
限制:
需要注意的是,BEFORE INSERT 触发器无法访问新生成的 id 值,因为它尚未分配。但是,使用 AFTER INSERT 触发器访问生成的值不是一个选项,因为在该阶段无法修改列值。
因此,上面介绍的两步方法为 MySQL 中所需的行为提供了解决方案.
以上是如何使用触发器将 MySQL 中的字段默认为自动生成的 ID?的详细内容。更多信息请关注PHP中文网其他相关文章!