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

วิธี INSERT วันที่อัตโนมัติใน MySQL ด้วย TRIGGER

ใช้ 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() ถ้าต้องการเวลาด้วย