mysql 觸發器定義 mysql觸發器

2021-10-17 21:39:51 字數 1518 閱讀 5980

什麼是觸發器

觸發器是與表有關的資料庫物件,在滿足定義條件時觸發,並執行觸發器中定義的語句集合。觸發器的這種特性可以協助應用在資料庫端確保資料的完整性。

舉個例子,比如你現在有兩個表【使用者表】和【日誌表】,當乙個使用者被建立的時候,就需要在日誌表中插入建立的log日誌,如果在不使用觸發器的情況下,你需要編寫程式語言邏輯才能實現,但是如果你定義了乙個觸發器,觸發器的作用就是當你在使用者表中插入一條資料的之後幫你在日誌表中插入一條日誌資訊。當然觸發器並不是只能進行插入操作,還能執行修改,刪除。

建立觸發器

建立觸發器的語法如下:

create trigger trigger_name trigger_time trigger_event on tb_name for each row trigger_stmt

trigger_name:觸發器的名稱

tirgger_time:觸發時機,為before或者after

trigger_event:觸發事件,為insert、delete或者update

tb_name:表示建立觸發器的表明,就是在哪張表上建立觸發器

trigger_stmt:觸發器的程式體,可以是一條sql語句或者是用begin和end包含的多條語句

所以可以說mysql建立以下六種觸發器:

before insert,before delete,before update

after insert,after delete,after update

其中,觸發器名引數指要建立的觸發器的名字

before和after引數指定了觸發執行的時間,在事件之前或是之後

for each row表示任何一條記錄上的操作滿足觸發事件都會觸發該觸發器

建立有多個執行語句的觸發器

create trigger 觸發器名 before|after 觸發事件

on 表名 for each row

begin

執行語句列表

end其中,begin與end之間的執行語句列表引數表示需要執行的多個語句,不同語句用分號隔開

tips:一般情況下,mysql預設是以 ; 作為結束執行語句,與觸發器中需要的分行起衝突

為解決此問題可用delimiter,如:delimiter ||,可以將結束符號變成||

當觸發器建立完成後,可以用delimiter ;來將結束符號變成;

mysql> delimiter ||mysql>create trigger demo before delete->on users for each row->begin->insert into logs values(now());->insert into logs values(now());->end-> ||query ok, 0 rows affected (0.06sec)

mysql> delimiter ;

上面的語句中,開頭將結束符號定義為||,中間定義乙個觸發器,一旦有滿足條件的刪除操作

就會執行begin和end中的語句,接著使用||結束

最後使用delimiter ; 將結束符號還原

my sql 觸發器 mysql建立觸發器

首先,我們來了解一下什麼是觸發器,觸發器,就是在對一張表資料進行增 insert 刪 delete 改 update 的時候,為了保持資料的一致性,對別的表也要進行相應的資料修改。我們都知道mysql最後事務提交後,資料是會儲存到磁碟上的,那麼每次在insert,delete,update時候舊資料...

my sql 觸發器 MySQL檢視觸發器

檢視觸發器是指檢視資料庫中已經存在的觸發器的定義 狀態和語法資訊等。mysql 中檢視觸發器的方法包括 show triggers 語句和查詢 information schema 資料庫下的 triggers 資料表等。本節將詳細介紹這兩種檢視觸發器的方法。show triggers語句檢視觸發器...

mysql 複製觸發器 MySQL觸發器

觸發器是mysql響應以下任意語句而自動執行的一條mysql語句 或位於begin和end語句之間的一組語句 delete insert update 其他mysql語句不支援觸發器。建立觸發器 在建立觸發器時,需要給出4條資訊 唯一的觸發器名 觸發器關聯的表 觸發器應該響應的活動 delete i...