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

ลบตาราง MySQL อัตโนมัติหลัง X ชั่วโมงด้วย EVENT

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-timeAT timestampAT CURRENT_TIMESTAMP + INTERVAL 2 HOUR
RecurringEVERY interval STARTS timestamp ENDS timestampEVERY 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
  • สิทธิ์: ต้องมี EVENT privilege
  • ใช้กับตารางชั่วคราว (Temporary Tables) ไม่ได้ เพราะ Session แยกกัน

ลบ Event

DROP EVENT IF EXISTS drop_table_event_after2HoursDemo;