Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Từ khóa OLD và NEW trong trigger MySQL cho phép truy cập cột như thế nào?

Trong định nghĩa trigger, ta có thể tham chiếu cột của hàng đang chèn, cập nhật hoặc xóa. Cách OLD và NEW cho phép truy cập:

  • Gắn tiền tố OLD cho tên cột để tham chiếu giá trị từ hàng gốc.
  • Gắn tiền tố NEW cho tên cột để tham chiếu giá trị trong hàng mới.

Sự kiện kích hoạt quyết định cái nào được phép:

  • INSERT trigger: NEW.column_name chỉ giá trị cột sẽ chèn vào hàng mới. OLD không được phép.
  • DELETE trigger: OLD.column_name chỉ giá trị cột trong hàng sẽ xóa. NEW không được phép.
  • UPDATE trigger: OLD.column_name và NEW.column_name lần lượt tham chiếu giá trị cột trước và sau khi cập nhật.

Nói cách khác: OLD chỉ dùng đọc (read-only), NEW có thể đọc hoặc thay đổi giá trị cột.

Ví dụ dùng OLD (DELETE trigger)

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)

Ví dụ dùng NEW (INSERT trigger)

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)