本教程以mysql8為主版本(內容兼顧mysql5.7)。
觸發器是與表相關的資料庫物件,在滿足表資料庫定義的變化條件是觸發執行
建立觸發器的語法為:
create
[definer = user]
trigger trigger_name
trigger_time trigger_event
on tbl_name for each row
[trigger_order]
trigger_body
trigger_time:
trigger_event:
trigger_order: ot
trigger_time
是觸發動作時間。可以是before
或after
表示觸發器在要修改資料之前或之後執行本觸發器內容。(注意,觸發器不能建立在臨時表上)。
trigger_event
指示啟用觸發器的操作型別:
在觸發器定義的body內,可以使用別名old
和new,來指示資料發生變化前後的記錄內容。例如資料發生變化前後的某列。old.col_name 和
new.col_name
先建立乙個用於儲存日誌的表:
mysql> create table change_log(change_time timestamp, message varchar(512));
query ok, 0 rows affected (0.01 sec)
建立觸發器
mysql> delimiter $$
mysql> create trigger tgr_ins_employee
after insert on employee for each row
begin
insert into change_log values (current_timestamp(), concat('insert data:', new.name) );
end;
$$query ok, 0 rows affected (0.00 sec)
mysql> delimiter ;
對employee插入一條資料庫後,再檢視change_log表的結果,發現觸發器已經生效:
mysql> insert into employee values (2001, 'xiaoming', 2001);
query ok, 1 row affected (0.00 sec)
mysql> select * from change_log;
+---------------------+----------------------+
| change_time | message |
+---------------------+----------------------+
| 2019-11-23 23:21:22 | insert data:xiaoming |
+---------------------+----------------------+
1 row in set (0.00 sec)
insert ...on duplicate key update... 該語法的用途是為了解決重複性,當資料庫中存在某個記錄時,執行這條語句會更新update它,而不存在這條記錄時,會插入insert。
判斷重複的標準是:如果插入的記錄導致乙個unique索引或者primary key(主鍵)出現重複,則認為重複。
其語法是(後面update的字段只涉及需要修改的字段,不用該表中所有欄位都出現):
insert into tablename(field1,field2, field3, ...) values(value1, value2, value3, ...) on duplicate key update field1=value1,field8=value8, ...;
對於這種insert場景,該錶上觸發器的出發順序說明如下:
如果屬於非重複的記錄(既實際是insert動作):順序為:before insert → after insert
如果屬於重複的記錄(既實際是update動作):順序為:
before insert
→ before update→ after update。既雖然實際執行的是update,也會觸發before insert。
mysql 觸發器基礎
mysql的觸發器 一般用在需要有資料統計的時候,如果每次請求都要對一張表的資料進行統計,可以考慮觸發器,如 乙個公司的 雇員資訊表中,有使用者名稱 和 使用者的工資字段,現在需要在前端頁面上展示,總的雇員數,和總的工資數,如果每請求一次都要去使用 mysql的聚合函式 sum 和 count 其實...
MySQL基礎 觸發器
觸發器 trigger 監視某種情況,並觸發某種操作,它的執行是由事件來觸發的,例如當對乙個表進行操作 insert,delete,update 時就會啟用它執行。觸發器經常用於加強資料的完整性約束和業務規則等。觸發器建立語法四要素 1.監視地點 table 2.監視事件 insert update...
mysql 基礎 觸發器
簡單的說,就是一張表發生了某件事 插入 刪除 更新操作 然後自動觸發了預先編寫好的若干條sql語句的執行 特點 觸發事件的操作和觸發器裡的sql語句是乙個事務操作,具有原子性,要麼全部執行,要麼都不執行 作用 保證資料的完整性,起到約束的作用 觸發器是隱藏到mysql後台執行的功能。由於觸發器是隱藏...