數據庫中的觸發器
觸發器(TRIGGER)是由事件來觸發某個操作。這些事件包括INSERT語句、UPDATE語句和DELETE語句。當數據庫系統執行這些事件時,會激活促發其執行相應的操作。
使用觸發器有一定的好處,比如同步更新數據到某個表等,不過觸發器不能使用過多,會造成性能上的影響,這方面的影響還挺大,如果有一個上百萬記錄的表,不推薦使用觸發器。
建表(以Mysql數據庫為例)
-
t_book
-
t_bookType
-
t_book_log
創建只有一個執行語句的觸發器
create TRIGGER trig_book after INSERT
ON t_book FOR each ROW
UPDATE t_booktype SET bookNum = bookNum+1 WHERE new.bookTypeId=t_booktype.id
new old 觸發的兩個過度變量;
new:新增一條語句的新增對象;
old:刪除一條語句的刪除對象;
向t_book中插入一條數據時
INSERT INTO t_book VALUES('6','阿甘正傳',100,'Tom',2);
這時去 t_bookType 中查詢就會發現 文學類 的數量增加了 1。
創建有多個執行語句的觸發器
DELIMITER |
create TRIGGER trig_book2 after DELETE
ON t_book FOR EACH ROW
BEGIN
update t_bookType set bookNum = bookNum-1 where old.bookTypeId=t_booktype.id;
insert into t_book_log values(null,NOW(),'在book表里刪除了一條數據');
END
|
DELIMITER ;
DELIMITER | 數據庫語句 | DELIMITER;//告訴數據庫這時一條語句內容
刪除t_book中一條數據時
DELETE FROM t_book WHERE id=5;
這時去 t_bookType 中查詢就會發現 文學類 的數量減少了 1。並且 t_book_log 中多了一條刪除記錄。
查看觸發器
SHOW TRIGGERS;
刪除觸發器
DROP TRIGGER trig_book;