ใช้ BEFORE INSERT TRIGGER ตั้งค่าให้ฟิลด์วันที่รับค่าวันที่ปัจจุบัน (CURDATE()) อัตโนมัติทุกครั้งที่มีการเพิ่มข้อมูล
ตัวอย่างการใช้งาน
สร้างตารางมีฟิลด์ DueDate:
mysql> create table DemoTable1584 (
-> DueDate datetime
-> );
Query OK, 0 rows affected (1.79 sec)
สร้าง Trigger ก่อน INSERT:
mysql> create trigger insertDate before insert on DemoTable1584
-> for each row set new.DueDate=curdate();
Query OK, 0 rows affected (0.22 sec)
INSERT ข้อมูลโดยไม่ระบุค่า (ค่าว่าง):
mysql> insert into DemoTable1584 values(); Query OK, 1 row affected (0.66 sec) mysql> insert into DemoTable1584 values(); Query OK, 1 row affected (0.10 sec) mysql> insert into DemoTable1584 values(); Query OK, 1 row affected (0.07 sec)
ดูผลลัพธ์:
mysql> select * from DemoTable1584;
+---------------------+ | DueDate | +---------------------+ | 2019-10-18 00:00:00 | | 2019-10-18 00:00:00 | | 2019-10-18 00:00:00 | +---------------------+ 3 rows in set (0.00 sec)
คำอธิบาย
BEFORE INSERT: ทำงานก่อนบันทึกข้อมูลFOR EACH ROW: ทำงานทุกแถวที่เพิ่มSET NEW.DueDate = CURDATE(): กำหนดค่าวันที่ปัจจุบันให้ฟิลด์ DueDate- ใช้
VALUES()ว่างได้ เพราะ Trigger จะเติมค่าให้
หมายเหตุ: ใช้ NOW() แทน CURDATE() ถ้าต้องการเวลาด้วย