觸發器的一些新認知

laraverer發表於2022-02-11

什麼是觸發器

觸發器(trigger)是MySQL提供給程式設計師和資料分析員來保證資料完整性的一種方法,它是與表事 件相關的特殊的儲存過程,它的執行不是由程式呼叫,也不是手工啟動,而是由事件來觸發,比如當對 一個表進行操作作(insert,delete, update)時就會啟用它執行。

觸發器建立的四個要素

 1. 監視地點(table)
 2. 監視事件(insert/update/delete3. 觸發時間(before/after
 4. 觸發事件(insert/update/delete

建立觸發器

1)語法格式

CREATE TRIGGER Trigger_Name -- 觸發器名,在一個資料庫中觸發器名是唯一的
before/after(insert/update/delete-- 觸發的時機 和 監視的事件
on table_Name -- 觸發器所在的表
for each row -- 固定寫法 叫做行觸發器, 每一行受影響,觸發事件都執行
begin(可選引數,根據mysql版本決定)
-- begin和end之間寫觸發事
end(可選引數,根據mysql版本決定)

報錯資訊

系統會報這樣的錯誤:it is already used by statement which invoked this stored function/trigger.

觸發器針對同一張表時,不需要寫完整的sql語句,只要使用 `set`語句即可(set new.name=a)

系統會報這樣的錯誤: ERROR 1362 (HY000): Updating of NEW row is not allowed in after trigger

觸發器不允許在插入資料後(`after`事件),對插入的資料進行更新操作.
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章