1. 程式人生 > >Mysql觸發器的定義和使用簡要描述

Mysql觸發器的定義和使用簡要描述

編輯歷史:
2018.3.14  小賴   文件初始化

1. 觸發器的定義

觸發器(TRIGGER)是MySQL的資料庫物件之一,從5.0.2版本開始支援。該物件與程式語言中的函式非常類似,都需要宣告、執行等。但是觸發器的執行不是由程式呼叫,也不是由手工啟動,而是由事件來觸發、啟用從而實現執行。有點類似DOM中的事件。

2. 觸發器語法

CREATE TRIGGER trigger_name
    trigger_time
    trigger_event ON tbl_name
    FOR EACH ROW
    begin
      ……
    end
引數解釋:
  • trigger_name 為將定義的觸發器名字

  • trigger_time 觸發器的執行時機(AFTER或者BEFORE)。before就是在sql執行之前,先執行觸發器;after相反。

  • trigger_event 觸發器的觸發事件(常見的有3種:insert、uodate、delete)

  • tbl_name 則是觸發器要加在哪張表中

  • begin end之間寫程式體,如果僅有1條語句,則可以不用begin end,直接將語句寫在後面。

3. 觸發器使用場景(案例)

需求說明:客戶想實現使用者表自動使用rank值排序

create trigger trigger_user_rank_add after
insert on user for each row begin declare c int;
set c = (select max(rank) from user ); update user set rank = c + 1 where id = new.id ; end

4. 檢視觸發器

語法:SHOW TRIGGERS FROM [庫名]

將查出來整個庫下面的所有觸發器:

show triggers from xl_test 

5. 刪除觸發器

語法:DROP TRIGGER [庫名].[觸發器名稱]

DROP TRIGGER
xl_test.tri_updateInviteCount;