數據庫中的觸發器


數據庫中的觸發器

觸發器(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;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM