這裏呢,有兩張表,分別是 CXY_TS_ORDER_TICKET
和 CXY_TS_ORDER_TICKET_STATUS
表,在 CXY_TS_ORDER_TICKET
表裏面有一個
get_status 字段,如今呢,咱們想在該字段發生變化時,在
CXY_TS_ORDER_TICKET_STATUS` 表中,將該字段插入,而且記錄變化時間以及發生變化的記錄的主鍵。所以呢,我打算用觸發器去實現這個需求mysql
-- Created by util.you.com@gmail.com delimiter $$ CREATE TRIGGER `order_ticket_status_trigger` AFTER UPDATE ON `CXY_TS_ORDER_TICKET` FOR EACH ROW BEGIN DECLARE s1 INT(11); -- 聲明變量,用於存入 CXY_TS_ORDER_TICKET 表的 get_status 字段值,id 字段值 DECLARE s2 INT(11); set s2 = new.id; -- 分別給 s1 和 s2 賦值 set s1 = new.get_status; IF((old.get_status != new.get_status) OR (old.get_status IS NULL && new.get_status IS NOT NULL)) THEN INSERT INTO `CXY_TS_ORDER_TICKET_STATUS`(`order_ticket_id`, `STATUS`, `insert_date_time`) VALUES(s2, s1, DATE_FORMAT(now(),'%Y-%m-%d %H:%i:%s')); END IF; END$$
在 mysql 中,new
、old
都是內置的,分別表示一個字段發生變化前、後的值(固然也包括插入操做先後的變化),此處呢,由於咱們須要根據CXY_TS_ORDER_TICKET
表的get_status
字段來插入記錄到CXY_TS_ORDER_TICKET_STATUS
表,所以呢,new 和 old 都取該字段便可。
mysql
中的觸發器呢,大體分爲三類:insert
型、update
型、delete
型。sql什麼時候觸發該操做呢,又分爲
after
和before
型code上示例子,就是一個觸發器的大體模板,根據哪一張表的變化來觸發該觸發器,就
on
這張表便可了。get
原創手敲不易,轉載請註明出處,謝謝。我是拉丁小毛,歡迎你們關注我哦,一塊兒交流,共同進步。有問題能夠
郵我哦(util.you.com@gmail.com)