MySQL Event Scheduler ช่วยให้สามารถกำหนดการลบตาราง (หรือทำงานอื่นๆ) อัตโนมัติในเวลาที่กำหนดได้ โดยใช้คำสั่ง CREATE EVENT
Syntax พื้นฐาน
CREATE EVENT yourEventName ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL x HOUR DO DROP TABLE IF EXISTS yourTableName;
ตัวอย่าง: ลบตารางหลัง 2 ชั่วโมง
mysql> create table DemoTable (
StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
StudnetFirstName varchar(20),
StudentLastName varchar(20),
StudnetAge int
);
mysql> CREATE EVENT drop_table_event_after2HoursDemo ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 2 HOUR DO DROP TABLE IF EXISTS DemoTable;
ตรวจสอบ Event ที่สร้าง
SHOW EVENTS;
เปิด/ปิด Event Scheduler
-- ตรวจสอบสถานะ SHOW VARIABLES LIKE 'event_scheduler'; -- เปิด (ถ้าปิดอยู่) SET GLOBAL event_scheduler = ON; -- ปิด SET GLOBAL event_scheduler = OFF;
รูปแบบ Schedule ต่างๆ
| ประเภท | Syntax | ตัวอย่าง |
|---|---|---|
| One-time | AT timestamp | AT CURRENT_TIMESTAMP + INTERVAL 2 HOUR |
| Recurring | EVERY interval STARTS timestamp ENDS timestamp | EVERY 1 DAY STARTS '2024-01-01 00:00:00' |
| ทุกวันเวลา 2 โมงเช้า | EVERY 1 DAY AT '02:00:00' | EVERY 1 DAY AT '02:00:00' |
คำเตือนสำคัญ
- Event Scheduler ต้องเปิดอยู่ (ON) มิฉะนั้น Event จะไม่ทำงาน
- DROP TABLE IF EXISTS - ป้องกัน Error ถ้าตารางถูกลบไปแล้ว
- Event จะถูกลบอัตโนมัติหลังรันเสร็จ (One-time) ถ้าไม่ระบุ
ON COMPLETION PRESERVE - สิทธิ์: ต้องมี
EVENTprivilege - ใช้กับตารางชั่วคราว (Temporary Tables) ไม่ได้ เพราะ Session แยกกัน
ลบ Event
DROP EVENT IF EXISTS drop_table_event_after2HoursDemo;