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');

TRIGGER が正常に作成されました。しかし、人のテーブルに挿入しようとするたびに、外部キーのエラーが発生しました。そこで、外部キーを落として成功しました。しかし、このトリガーの用途は何ですか? これが役立つ良い例を教えてください。おそらく、これは外部キーを更新するように設計されていないため、わかりません。

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 に答える