0

伙计们,我正在探索 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');

触发器已成功创建。但是每当我尝试插入persons表时,我都会遇到外键错误。所以我放弃了外键,它是成功的。但是这个触发器有什么用?你能找到一个有用的好例子吗?因为也许这不是为了更新外键而设计的,我不知道。

4

1 回答 1

1

而不是尝试从中获取值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演示

于 2013-06-17T07:57:34.527 回答