MySQL에서 일정 시간이 지난 후 테이블을 자동으로 삭제하려면 이벤트(Event)를 생성해야 합니다. 이벤트 스케줄러를 활용하면 지정한 시간에 원하는 작업을 자동으로 실행할 수 있습니다.
기본 문법
x시간 후에 테이블을 삭제하는 이벤트 생성 문법은 다음과 같습니다.
CREATE EVENT yourEventName
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL x HOUR
DO
DROP TABLE IF EXISTS yourTableName;
예제 테이블 생성
먼저 실습용 테이블을 하나 만들어 보겠습니다.
mysql> create table DemoTable
(
StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
StudentFirstName varchar(20),
StudentLastName varchar(20),
StudentAge int
);
Query OK, 0 rows affected (0.52 sec)
2시간 후 테이블 삭제 이벤트 생성
이제 위에서 설명한 문법을 적용하여, 2시간 후에 테이블이 삭제되도록 이벤트를 생성합니다.
mysql> CREATE EVENT drop_table_event_after2HoursDemo
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 2 HOUR
DO
DROP TABLE IF EXISTS DemoTable;
Query OK, 0 rows affected (0.17 sec)
이벤트가 정상적으로 등록되면 'DemoTable' 테이블은 정확히 2시간 후에 자동으로 삭제됩니다.
참고 사항
이벤트가 실행되지 않는다면 MySQL의 이벤트 스케줄러가 비활성화되어 있을 수 있습니다. 다음 명령으로 활성화 여부를 확인하고 켤 수 있습니다.
-- 이벤트 스케줄러 상태 확인
SHOW VARIABLES LIKE 'event_scheduler';
-- 이벤트 스케줄러 활성화
SET GLOBAL event_scheduler = ON;
또한 생성된 이벤트 목록은 SHOW EVENTS; 명령으로 확인할 수 있으며, 더 이상 필요하지 않은 이벤트는 DROP EVENT 이벤트명;으로 제거할 수 있습니다.