這篇文章為大家帶來了關於mysql的相關知識,其中主要整理了觸發器的相關問題,包括了為什麼需要觸發器、觸發器的概述、觸發器的創建等等內容,下面一起來看一下,希望對大家有幫助。
推薦學習:mysql影片教學
有一些表格是互相關聯的,比如說商品表和庫存表,我們對商品表的資料進行操作,那麼對應的庫存表還得發生變化,這樣才可以保證資料的完整。如果我們是自己手動維修的話,比較麻煩。
這時候我們可以使用觸發器,建立一個觸發器,讓商品資訊資料的插入操作自動觸發庫存資料的插入操作等,這樣我們就不需要擔心因為忘記新增庫存資料而導致資料遺失了。
觸發器是作用在表上的,比如說我們希望表A新增一條記錄的時候就觸發觸發器的執行,而且還要選擇觸發器是在insert語句執行之前執行觸發器還是之後。
CREATE TRIGGER 触发器名称 {BEFORE|AFTER} {INSERT|UPDATE|DELETE} ON 表名 FOR EACH ROW 触发器执行的语句块;
說明:
表名
:表示觸發器監控的物件。
BEFORE|AFTER
:表示觸發的時間。 BEFORE 表示在事件之前觸發;AFTER 表示在事件之後觸發。
INSERT|UPDATE|DELETE
:表示觸發的事件。
觸發器執行的語句區塊
:可以是單條SQL語句,也可以是由BEGIN…END結構組成的複合語句區塊。
先準備表格
CREATE TABLE test_trigger (id INT PRIMARY KEY AUTO_INCREMENT,t_note VARCHAR(30));CREATE TABLE test_trigger_log (id INT PRIMARY KEY AUTO_INCREMENT,t_log VARCHAR(30));
需求:建立觸發器:建立名稱為before_insert的觸發器,向test_trigger資料表插入在資料之前,向test_trigger_log資料表中插入before_insert的日誌資訊。
show triggers\G 注意,在SQLyog中,不能加上\G
show create trigger 触发器名
SELECT * FROM information_schema.TRIGGERS;
觸發器也是資料庫對象,觸發器也是用drop語句來刪除
drop trigger if exists 触发器名;
推薦學習:mysql影片教學
以上是完全掌握MySQL觸發器的詳細內容。更多資訊請關注PHP中文網其他相關文章!