create table qrtz_triggers
(
    SCHED_NAME     varchar(120) not null comment '스케줄러 이름',
    TRIGGER_NAME   varchar(200) not null comment '트리거 이름 (트리거의 고유 식별자)',
    TRIGGER_GROUP  varchar(200) not null comment '트리거 그룹 (트리거들을 논리적으로 그룹화)',
    JOB_NAME       varchar(200) not null comment '연결된 작업 이름 (QRTZ_JOB_DETAILS 참조)',
    JOB_GROUP      varchar(200) not null comment '연결된 작업 그룹 (QRTZ_JOB_DETAILS 참조)',
    DESCRIPTION    varchar(250) null comment '트리거에 대한 설명',
    NEXT_FIRE_TIME bigint(13)   null comment '다음 실행 예정 시간 (Unix timestamp)',
    PREV_FIRE_TIME bigint(13)   null comment '이전 실행 시간 (Unix timestamp)',
    PRIORITY       int          null comment '트리거 우선순위 (높을수록 우선 실행)',
    TRIGGER_STATE  varchar(16)  not null comment '트리거 상태 (WAITING, ACQUIRED, EXECUTING, COMPLETE, PAUSED, BLOCKED, ERROR)',
    TRIGGER_TYPE   varchar(8)   not null comment '트리거 타입 (SIMPLE, CRON, CALENDAR, BLOB, SIMPROP)',
    START_TIME     bigint(13)   not null comment '트리거 시작 시간 (Unix timestamp)',
    END_TIME       bigint(13)   null comment '트리거 종료 시간 (Unix timestamp, NULL이면 무제한)',
    CALENDAR_NAME  varchar(200) null comment '연결된 캘린더 이름 (QRTZ_CALENDARS 참조)',
    MISFIRE_INSTR  smallint(2)  null comment '미스파이어 처리 지침 (실행 시간을 놓쳤을 때의 처리 방법)',
    JOB_DATA       blob         null comment '트리거 실행 시 전달할 데이터 (직렬화된 객체)',
    primary key (SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP),
    constraint qrtz_triggers_ibfk_1
        foreign key (SCHED_NAME, JOB_NAME, JOB_GROUP) references qrtz_job_details (SCHED_NAME, JOB_NAME, JOB_GROUP)
)
    comment 'Quartz 트리거 정보 저장 테이블 - 작업 실행 조건과 스케줄 정의';

create index SCHED_NAME
    on qrtz_triggers (SCHED_NAME, JOB_NAME, JOB_GROUP);

