MySQL 触发器将字段值设置为 ID
在 MySQL 中,无法直接将字段更新为其 ID 的值使用触发器。这是因为触发器在插入、更新或删除行之前或之后、但在生成自动增量 ID 之前执行。
要实现所需的行为,您可以使用以下解决方法:
以下是触发器的 MySQL 语句:
CREATE TRIGGER MyTrigger BEFORE INSERT ON MyTable FOR EACH ROW BEGIN SET NEW.group_id = COALESCE(NEW.group_id, NEW.id); END
不幸的是,此触发器将不起作用对于所需的行为,因为在 BEFORE INSERT 阶段,自动生成的 ID 值尚未生成。因此,如果 group_id 为 null,则默认为 NEW.id,始终为 0。
将触发器更改为在 AFTER INSERT 阶段触发也不起作用,因为您无法修改行后的列值已插入。
唯一的解决方案是执行插入,然后如果未设置立即更新 group_id 值:
INSERT INTO MyTable (group_id, value) VALUES (NULL, 'a'); UPDATE MyTable SET group_id = COALESCE(group_id, id) WHERE id = LAST_INSERT_ID();
以上是如何使用触发器在 MySQL 中将字段值设置为其 ID?的详细内容。更多信息请关注PHP中文网其他相关文章!