MySQL 觸發器是一種在數據庫執行特定操作時自動執行的過程。在這種過程中,使用 old 和 new 兩個關鍵詞以訪問觸發器中受影響的數據行。
old 與 new 都是 MySQL 觸發器的系統變量。new 是正要被插入、更新或刪除的新值,而 old 是原始的值。
為了更好的演示,讓我們來創建一個學生表和一個觸發器,觸發器將在學生表中的成績字段更新時自動將年級字段設置為成績的等級。
<!-- 創建學生表 --> CREATE TABLE student ( id INT, name VARCHAR(20), grade VARCHAR(6), score INT ); <!-- 插入學生數據 --> INSERT INTO student VALUES (1, 'Tom', '一年級', 90); INSERT INTO student VALUES (2, 'Jerry', '二年級', 80); INSERT INTO student VALUES (3, 'Tony', '三年級', 70); INSERT INTO student VALUES (4, 'Molly', '四年級', 60); <!-- 創建觸發器 --> CREATE TRIGGER update_grade BEFORE UPDATE ON student FOR EACH ROW BEGIN IF NEW.score > 90 THEN SET NEW.grade = '優秀'; ELSEIF NEW.score > 80 THEN SET NEW.grade = '良好'; ELSEIF NEW.score > 70 THEN SET NEW.grade = '中等'; ELSE SET NEW.grade = '不及格'; END IF; END;
在上面的代碼中,我們創建了一個名為 update_grade 的觸發器。它被設置為在每次更新之前自動執行,并檢查新值中的分數字段。如果分數高于 90 分,則將年級字段設置為“優秀”,分數高于 80 分則設置為“良好”,分數高于 70 分則設置為“中等”,否則設置為“不及格”。
Mysql 觸發器能夠簡化數據庫的操作,提高數據庫的效率,因此開發人員可以更專注于編寫高質量的應用程序代碼。