伙计们,我正在探索 MySQL 中的触发器,但我有点困惑。我创建了这个表:
persons
pid #primary key
last_name
first_name
然后这个表:
employee_hierarchy
emp_id #primary key
pid #foreign key
role
并创建了这个触发器:
CREATE TRIGGER after_person_insert
AFTER INSERT ON persons
FOR EACH ROW
INSERT INTO employee_hierarchy
VALUES('','LAST_INSERT_ID()','employee');
TRIGGER 已成功创建。但是每当我尝试插入人员表时,我都会遇到外键错误。于是我把外键丢掉,就成功了。不过这个触发装置有什么用呢?您能提供一个有用的好例子吗?因为也许这不是为了更新外键而设计的,我不知道。
最佳答案
而不是尝试从 LAST_INSERT_ID()
获取值(顺便说一句,您插入一个字符串,因为它在引号中)您只需要从 NEW.pid
读取分配的值。此时您可以使用AFTER INSERT
时间。
CREATE TRIGGER after_person_insert
AFTER INSERT ON persons
FOR EACH ROW
INSERT INTO employee_hierarchy
VALUES(NULL, NEW.pid, 'employee');
这里是SQLFiddle 演示
关于mysql - 如何在Mysql中使用触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17142451/