ใช้ MySQL Event Scheduler เพื่อลบ Record อัตโนมัติเมื่อหมดอายุ (TTL)
ขั้นตอนการตั้งค่า
1. เปิด Event Scheduler
SET GLOBAL event_scheduler = ON;
2. สร้างตาราง
mysql> create table EventDemo (
-> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> EventDateTime datetime
-> );
Query OK, 0 rows affected (0.71 sec)
เพิ่มข้อมูล:
mysql> insert into EventDemo(EventDateTime) values('2010-09-21'),('2016-10-27'),('2018-12-09'),('2019-03-12'),('2019-01-04');
3. สร้าง Event ลบข้อมูลเก่าทุกวัน
mysql> DELIMITER //
mysql> CREATE EVENT DeleteDemo
-> ON SCHEDULE EVERY 1 DAY
-> DO
-> BEGIN
-> DELETE FROM EventDemo WHERE EventDateTime < NOW();
-> END //
Query OK, 0 rows affected (0.31 sec)
mysql> DELIMITER ;
คำอธิบาย
ON SCHEDULE EVERY 1 DAY- รันทุกวันEventDateTime < NOW()- ลบแถวที่วันที่หมดอายุแล้วDELIMITER //- เปลี่ยน delimiter ชั่วคราวเพื่อใช้ ; ใน BEGIN...END
คำสั่งที่เกี่ยวข้อง
SHOW EVENTS; -- ดู Event ทั้งหมด DROP EVENT DeleteDemo; -- ลบ Event ALTER EVENT DeleteDemo DISABLE; -- ปิด Event ชั่วคราว
ข้อควรระวัง: Event ต้องมี Privilege EVENT และ event_scheduler=ON