插入、更新、刪除前自動執行的SQL語句,方便保持數據的一致性
就像手槍的板機一樣,設定好Triggers後,執行對應的SQL時就會發動,要注意的是,手槍有可能走火,Triggers也是,在操作表時要注意不要修改到觸發表,不然可能導致無限迴圈。
1.時間點:BEFORE、AFTER
2.事件:INSERT、UPDATE、DELETE
想像成組裝積木總共可以得到2X3=6個組合的觸發,也就是
1.BEFORE INSERT
2.BEFORE UPDATE
3.BEFORE DELETE
4.AFTER INSERT
5.AFTER UPDATE
6.AFTER UDELETE
資料庫中有兩張表,pays、bills,有顧客成立一筆新pay後,就會自動更新bills中的總額
CREATE TRIGGER <命名>_<時間點>_<事件>
ON <綁定的資料表>
FOR EACH ROW -- 每一行
<插入、更新、刪除等邏輯>;
DROP TRIGGER <名稱>;
SHOW TRIGGERS;
1.打開Query Tab
DELIMITER $$
CREATE TRIGGER pays_after_insert
AFTER INSERT ON pays
FOR EACH ROW
BEGIN
UPDATE bills
SET total = total + NEW.amount
WHERE client_id = NEW.client_id;
END$$
DELIMITER ;
2.執行後可以用SHOW TRIGGERS確認成功
3.還未新增pay的client_id=7顧客,金額是540
4.讓他帳單變貴吧,新增一筆100元的pay
5.笑死,帳單變640
Day11-MySQL的事件(Events)