mysql 觸發器

mysql 觸發器

前言

這裏呢,有兩張表,分別是 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 中, newold都是內置的,分別表示一個字段發生變化前、後的值(固然也包括插入操做先後的變化),此處呢,由於咱們須要根據 CXY_TS_ORDER_TICKET表的 get_status字段來插入記錄到 CXY_TS_ORDER_TICKET_STATUS 表,所以呢,new 和 old 都取該字段便可。

mysql 中的觸發器呢,大體分爲三類:insert 型、update 型、delete 型。sql

什麼時候觸發該操做呢,又分爲 afterbeforecode

上示例子,就是一個觸發器的大體模板,根據哪一張表的變化來觸發該觸發器,就 on 這張表便可了。get

聲明

原創手敲不易,轉載請註明出處,謝謝。我是拉丁小毛,歡迎你們關注我哦,一塊兒交流,共同進步。有問題能夠 郵我哦(util.you.com@gmail.com)
相關文章
相關標籤/搜索