Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

คำหลัก OLD และ NEW ช่วยให้เราเข้าถึงคอลัมน์ในแถวที่ได้รับผลกระทบจากทริกเกอร์ได้อย่างไร


ดังที่เราทราบในนิยามทริกเกอร์ เราสามารถอ้างถึงคอลัมน์ของแถวที่แทรก อัปเดต หรือลบได้ ต่อไปนี้เป็นวิธีที่คำหลัก OLD และ NEW ทำให้เราสามารถเข้าถึงคอลัมน์ต่างๆ -

  • เราต้องเติมคำนำหน้าชื่อคอลัมน์ด้วย qualifier เพื่ออ้างถึงค่าจากแถวเดิม

  • เราต้องเติมคำนำหน้าชื่อคอลัมน์ด้วย qualifier ของ 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)