MySQL的觸發(fā)器(Trigger)是一種特殊的存儲過程,通過在表上的特定事件(如INSERT、UPDATE、DELETE)發(fā)生時自動執(zhí)行。MySQL的觸發(fā)器可以用于在特定事件發(fā)生時,在數(shù)據(jù)庫內(nèi)部自動執(zhí)行一些操作。
MySQL的觸發(fā)器語法如下:
CREATE TRIGGER trigger_name {BEFORE | AFTER} {INSERT | UPDATE | DELETE} ON table_name FOR EACH ROW BEGIN -- 觸發(fā)器執(zhí)行的操作 END;
其中,
trigger_name
是觸發(fā)器的名稱BEFORE | AFTER
指定觸發(fā)器是在該事件發(fā)生前還是后執(zhí)行操作INSERT | UPDATE | DELETE
指定觸發(fā)器在哪個事件發(fā)生時執(zhí)行操作table_name
是要綁定觸發(fā)器的表名稱FOR EACH ROW
表示每一行數(shù)據(jù)都會觸發(fā)器執(zhí)行一次操作BEGIN ... END
中是觸發(fā)器需要執(zhí)行的操作
例如下面的代碼是創(chuàng)建當在學生表(students)中插入新的記錄時,自動在成績表(scores)中插入一條默認成績數(shù)據(jù)的觸發(fā)器:
CREATE TRIGGER insert_score AFTER INSERT ON students FOR EACH ROW BEGIN INSERT INTO scores (student_id, subject, score) VALUES (NEW.id, 'Math', 0); END;
上面的代碼定義了一個名為insert_score
的觸發(fā)器,當在students
表中插入新記錄時,觸發(fā)器會在插入之后執(zhí)行。然后將成績表中學生id為該記錄id,科目為數(shù)學,成績?yōu)?的記錄插入到scores
表中。