在 mysql 中,new
、old
都是內置的,分別表示一個字段發生變化前、後的值(當然也包括插入操作前後的變化),此處呢,因爲我們需要根據 CXY_TS_ORDER_TICKET
表的 get_status
字段來插入記錄到 CXY_TS_ORDER_TICKET_STATUS
表,因此呢,new 和 old 都取該字段即可。
mysql
中的觸發器呢,大致分爲三類:insert
型、update
型、delete
型。
何時觸發該操作呢,又分爲 after
和 before
型
需求:
1:當一個用戶新增時,順帶新增他的附屬表。這裏有 A 表,跟B 表,新增 A 表 觸發 新增 B 表
CREATE TRIGGER `ddd` AFTER INSERT ON `A`
FOR EACH ROW insert into B(m_id) values(new.id);
下圖是 navicat for mysql 的添加觸發器截圖
備註:
觸發器的優點
觸發器的優點在於,可以使用簡單的配置來實現複雜的功能,這些功能如果想要在應用層面去實現往往需要比較多的代碼量。
觸發器的缺點
觸發器有一個顯而易見的缺點,尤其是在MySQL中,由於MySQL僅支持行觸發模式,假如數據庫系統中現在有一條觸發器的功能是:當前表有新數據插入時,將數據同時插入另外一張表,此時,如果我們使用INSERT語句一次性向當前表中插入一千條數據(使用類似於INSERT INTO cur_table(id,name) VALUES(1,’週一‘) (2,'週二')....(1000,'週一千')的批量插入語句),由於行觸發的緣故,我們設定的插入觸發器將會被觸發1000次,這將帶來嚴重的性能問題! 因此,在對性能有要求的場景下不要使用觸發器,如果一定要使用,務必保證觸發器中的語句的開銷不會很大,並且不會被頻繁觸發!
觸發器還有一個缺陷,就是會將業務和數據庫捆綁在一起,使得系統的耦合度變高,當業務需求有變更時,系統可能變得難以維護。因此,在業務需求不穩定或者維護人員頻繁變動的場景下儘量不要使用觸發器。
優缺點轉載自:https://blog.csdn.net/fujie2017/article/details/84532399