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

สร้าง Record ใน MySQL พร้อม TTL (Time To Live) ด้วย Event Scheduler

ใช้ 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