首頁 >資料庫 >mysql教程 >'OLD和NEW關鍵字使我們能夠存取受觸發器影響的行中的列。'

'OLD和NEW關鍵字使我們能夠存取受觸發器影響的行中的列。'

WBOY
WBOY轉載
2023-09-18 23:01:12810瀏覽

OLD和NEW關鍵字使我們能夠存取受觸發器影響的行中的列。

如我們所知,在觸發器定義中,我們可以引用正在插入、更新或刪除的行的列。以下是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可以用來讀取或更改列的值。

在觸發器中使用關鍵字OLD

以下是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)

使用觸發器中的關鍵字NEW

以下是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中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除