關於Mysql 觸發器常用操作

基本語法:

CREATE TRIGGER 自定義名稱
觸發時機  觸發事件 ON 觸發事件所在的表名
FOR EACH ROW
觸發需要執行的邏輯;

創建觸發器

CREATE TRIGGER tr_seq1 
AFTER INSERT on table1
FOR EACH ROW
BEGIN
DECLARE cn INTEGER;
SELECT COUNT(galary_id) INTO cn from table2;
IF cn!=0 THEN
UPDATE table2 set table2.num=table2.num+2;
ELSE
INSERT INTO table1 VALUES(1,1,1);
END IF;
END;

上邊內容解釋如下:
使用符號分割,標示位於中間的內容爲一個整體,而不是單單用分號分割;
創建一個名稱是tr_seq1的觸發器;
觸發器觸發事件是,向table2插入數據只好觸發;
對每一行都生效;
開始具體邏輯;
聲明一個變量cn,類型是INTEGER;
查詢table1的數據數量,並賦值給變量cn;
判斷變量cn的值是否不等於0;
符合上邊的條件,則更新數據庫中num的值,在原基礎加2;
否則;
向table1中插入一條數據;
具體邏輯結束
分隔符結尾;
分割符聲明結尾。

 

其中,觸發器名參數指要創建的觸發器的名字

BEFORE和AFTER參數指定了觸發執行的時間,在事件之前或是之後

FOR EACH ROW表示任何一條記錄上的操作滿足觸發事件都會觸發該觸發器

 

查詢觸發器:

如果要查詢test庫中已有的觸發器,就可以這樣寫:

SHOW TRIGGERS FROM database

尤其注意,是庫名,不是表名。

 

如果只要查詢某個觸發器的詳細情況,可以用類似下邊的查詢語句:

SHOW CREATE TRIGGER  tr_seq1
  

刪除觸發器:

如果觸發器失效了,爲了減少資源消耗,可能需要進行刪除

DROP TRIGGER 觸發器名稱;

而一般用的比較多的,是在刪除前先進行一個判斷,判斷是否存在,那麼就成了下邊這樣:

DROP TRIGGER IF EXISTS 觸發器名稱;

不足之處,歡迎吐槽!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章