我有表1,其中id为autoincrement。 表2与表1有外键关系,其中我需要将表1中生成的值插入表2中
-- Trigger DDL Statements
DELIMITER $$
USE `baemer_emr`$$
CREATE TRIGGER `baemer_emr`.`after_insert_log` AFTER INSERT ON `baemer_emr`.`table1`
FOR EACH ROW
BEGIN
INSERT INTO table2 VALUES (last_insert_id() , something);
END$$
它正在工作,但之前正在显示数字。例如
插入表1,id = 15.在表2中返回14.任何想法?
答案 0 :(得分:7)
在触发器中,您有2个虚拟表,称为NEW
和OLD
您可以使用这些虚拟表来获取新插入的值
OLD
虚拟表仅适用于UPDATE
和DELETE
触发器
并且DELETE触发器没有NEW
表。
-- Trigger DDL Statements
DELIMITER $$
USE `baemer_emr`$$
CREATE TRIGGER after_insert_log AFTER INSERT ON table1
FOR EACH ROW
BEGIN
INSERT INTO table2 VALUES (NEW.id, something);
END$$
请注意,NEW.id
_(假设id是auto_increment字段)_将尚未设置在before insert
触发器中,这只是其中一个要避免的小陷阱