MySql觸發器new的默認值

DROP TABLE `dasi_util`.`student`
CREATE TABLE `dasi_util`.`student`(
 `id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '自增主鍵',
 `stu_id` VARCHAR(32) COMMENT '學生id',
 `stu_name` VARCHAR(32) COMMENT '學生姓名',
 `f1` VARCHAR(32) COMMENT '結果1',
 `f2` VARCHAR(32) COMMENT '結果2',
 PRIMARY KEY (`id`)
);

DELIMITER $$ 
DROP TRIGGER IF EXISTS `dasi_util`.`update_student`$$ 
CREATE TRIGGER `dasi_util`.`update_student` 
BEFORE UPDATE ON `dasi_util`.`student`
FOR EACH ROW 
BEGIN
   SET new.`f1` = new.`stu_id`;
   SET new.`f2` = old.`stu_id`;
END $$ 
DELIMITER ; 

插入數據

INSERT `student`(f1,f2) VALUES(0,0);
INSERT `student`(stu_id,f1,f2) VALUES(10,0,0);
INSERT `student`(f1,f2) VALUES(0,0);
INSERT `student`(stu_id,f1,f2) VALUES(10,0,0);
SELECT * FROM student;
id stu_id stu_name f1 f2
1 (NULL) (NULL) 0 0
2 10 (NULL) 0 0
3 (NULL) (NULL) 0 0
4 10 (NULL) 0 0

修改數據

UPDATE `student` SET `stu_id`='1' WHERE id=1;
UPDATE `student` SET `stu_id`='1' WHERE id=2;
UPDATE `student` SET `stu_name`='1' WHERE id=3;
UPDATE `student` SET `stu_name`='1' WHERE id=4;
SELECT * FROM student;
id stu_id stu_name f1 f2
1 1 (NULL) 1 (NULL)
2 1 (NULL) 1 10
3 (NULL) 1 (NULL) (NULL)
4 10 1 10 10

通過這1、2兩條數據推論出:
修改了stu_id,new.stu_id的值就是stu_id修改后的值;old.stu_id的值是原有的值(NULL也不例外)

通過這3、4兩條數據推論出:
修改了stu_name,new.stu_id的值就是old.stu_id的值;old.stu_id的值是原有的值(NULL也不例外)

小結

new的值在沒有修改的時候是和old的值一樣的(含NULL),但當修改了之后,new的值就是新的值

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,766評論 18 399
  • 一. Java基礎部分.................................................
    wy_sure閱讀 3,836評論 0 11
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,948評論 18 139
  • 轉至元數據結尾創建: 董瀟偉,最新修改于: 十二月 23, 2016 轉至元數據起始第一章:isa和Class一....
    40c0490e5268閱讀 1,775評論 0 9
  • 我現在在努力獲得獨立的資本。雖然他不能使我快樂,但無需讓自己陷入抱怨的泥潭里.這是很可怕的,不值得把一分一秒的時間...
    濘濘閱讀 299評論 0 0