Posted on 2017-11-24 14:33
W.R 閱讀(244)
評論(0) 編輯 收藏 所屬分類:
mySql
一、觸發器概念
觸發器(trigger):監視某種情況,并觸發某種操作,它是提供給程序員和數據分析員來保證數據完整性的一種方法,它是與表事件相關的特殊的存儲過程,它的執行不是由程序調用,也不是手工啟動,而是由事件來觸發,例如當對一個表進行操作( insert,delete, update)時就會激活它執行。
觸發器經常用于加強數據的完整性約束和業務規則等。 觸發器創建語法四要素:
1.監視地點(table)
2.監視事件(insert/update/delete)
3.觸發時間(after/before)
4.觸發事件(insert/update/delete)
觸發器基本語法如下所示:
DROP TRIGGER if EXISTS 觸發器名;
CREATE TRIGGER 觸發器名 BEFORE INSERT ON 表名
FOR EACH ROW
BEGIN
sql語句
END
其中: trigger_time是觸發器的觸發事件,可以為before(在檢查約束前觸發)或after(在檢查約束后觸發);
trigger_event是觸發器的觸發事件,包括insert、update和delete,需注意對同一個表相同觸發時間的相同觸發事件,只能定義一個觸發器;
可以使用old和new來引用觸發器中發生變化的記錄內容。
觸發器SQL語法:
DROP TRIGGER if EXISTS triggle_insert_enroll_students;
CREATE TRIGGER triggle_insert_enroll_students AFTER INSERT ON t_course_enroll_students
FOR EACH ROW BEGIN
-- update t_course_enroll_students set pid=(select id from t_course_enroll where t_course_enroll.course_name=t_course_enroll_students.course_name) where id=t_course_enroll_students.id;
set new.pid=(select id from t_course_enroll where t_course_enroll.course_name=new.course_name);
END