如我們所知,在觸發器定義中,我們可以引用正在插入、更新或刪除的行的列。以下是OLD和NEW關鍵字使我們能夠存取列的方式:
我們必須在列名前加上一個OLD限定符,以引用原始行中的值。
我們必須在列名前加上NEW限定符,以引用新行中的值。
現在,必須適當地使用OLD和NEW,因為觸發事件
確定哪些是允許的 −
在INSERT觸發器中,NEW.column_name表示要插入到新行中的列值。這裡不允許使用OLD。
在DELETE觸發器中,OLD.column_name表示要刪除的資料列中某一列的值。在這裡,NEW是不允許的。
在UPDATE觸發器中,OLD.column_name和NEW.column_name分別指的是行更新之前和之後的行中所列的值。
換句話說,我們可以說OLD必須以唯讀方式使用,而NEW可以用來讀取或更改列的值。
以下是DELETE觸發器範例,展示了OLD的使用方式 −
mysql> CREATE TRIGGER studentinfo_after_delete -> AFTER DELETE -> ON student_info -> FOR EACH ROW FOLLOWS -> BEGIN -> DECLARE vuser varchar(30); -> SELECT USER() into vuser; -> INSERT INTO student_info_deleted(id,deleted_date,deleted_by) VALUES(OLD.id,SYSDATE(),vuser); -> END; // Query OK, 0 rows affected (0.25 sec)
以下是INSERT觸發器的範例,展示了NEW的使用方法 −
mysql> Create Trigger before_inser_studentage BEFORE INSERT ON student_age FOR EACH ROW BEGIN IF NEW.age < 0 THEN SET NEW.age = 0; END IF; END // Query OK, 0 rows affected (0.30 sec)
以上是'OLD和NEW關鍵字使我們能夠存取受觸發器影響的行中的列。'的詳細內容。更多資訊請關注PHP中文網其他相關文章!