20.4.1 Event Scheduler 개요
MySQL 이벤트는 스케줄에 따라 실행하는 작업입니다. 따라서 이들을 예약 된 이벤트이라고 부를 수 있습니다. 이벤트를 만들 때 특정 시간에 시작하고 종료하고 하나 이상의 정기적 인 간격으로 실행되는 하나 이상의 SQL 문을 포함하는 명명 된 데이터베이스 오브젝트를 작성합니다. 개념적으로, 이것은 Unix의 crontab
( "cron 작업"라고도합니다) 및 Windows 작업 스케줄러의 생각을 닮아 있습니다.
이런 종류의 예약 된 작업은 "시간 트리거 '로 불리는 경우도 있고, 이들이 시간의 경과에 의해 트리거되는 개체임을 보여줍니다. 이것은 기본적으로 정확하지만, 섹션 20.3 "트리거 사용" 에서 설명하고있는 종류의 트리거와 혼동하지 않도록 이벤트의 용어를 사용합니다. 더 정확하게 말하면, 이벤트는 '시간 트리거'와 혼동하지 않도록해야합니다. 트리거는 지정된 테이블에서 열리는 이벤트의 특정 유형에 따라 실행되는 문을 가진 데이터베이스 개체이지만 (예약 된) 이벤트는 지정된 시간 간격의 경과에 따라 실행되는 문 을 가진 객체입니다.
SQL 표준은 이벤트 일정에 대한 대응은 없지만 다른 데이터베이스 시스템에는 선례가 있고, 이러한 구현과 MySQL Server에서 볼 수있는 구현 사이에는 일정한 유사성이 인정됩니다.
MySQL 이벤트에는 다음과 같은 주요 기능 및 특성이 있습니다.
MySQL 5.6에서는 이벤트는 그 이름과 이벤트에 할당 된 스키마에 의해 고유하게 식별됩니다.
이벤트는 일정에 따라 특정 작업을 수행합니다. 이 작업은 SQL 문으로 구성되며 필요에 따라
BEGIN ... END
블록 내의 복합 명령문 수 있습니다 ( 섹션 13.6 "MySQL 복합 문"부분 을 참조하십시오). 이벤트의 타이밍은 한 번만 또는 반복 중 하나입니다. 한 번만 이벤트는 한 번만 실행하지 않습니다. 반복 이벤트는 일정한 간격으로 작업을 반복 이벤트를 반복하는 일정에 특정 시작 시간과 종료 시간 모두 또는 한쪽을 할당하거나 모두 할당하지 않을 수 있습니다. (기본적으로 반복 이벤트의 일정은 만들어지면 바로 시작이 잘못되거나 삭제 될 때까지 계속됩니다.)반복 이벤트가 일정 간격 내에 종료하지 않으면 이벤트의 여러 인스턴스가 동시에 실행될 수 있습니다. 이것이 바람직하지 않은 경우는 동시 인스턴스를 방지 할 수있는 메커니즘을 마련하십시오. 예를 들어,
GET_LOCK()
함수와 행 또는 테이블 잠금을 사용할 수 있습니다.사용자는 이러한 목적을위한 SQL 문을 사용하여 예약 된 이벤트를 작성, 수정 및 삭제할 수 있습니다. 구문이 잘못된 이벤트 생성 및 수정 문이 실패하고 대응하는 오류 메시지가 표시됩니다. 사용자는 실제로 자신이 보유하지 않은 권한을 필요로하는 문을 이벤트의 액션에 포함될 수 있습니다. 이벤트 작성 또는 수정 문은 성공하지만 이벤트의 액션은 실패합니다. 자세한 내용은 섹션 20.4.6 "이벤트 스케줄러와 MySQL 권한" 을 참조하십시오.
이벤트 프로퍼티의 상당수는 SQL 문을 사용하여 설정 또는 변경할 수 있습니다. 이러한 특성은 이벤트의 이름, 타이밍, 지속성 (즉, 일정 기간이 만료 된 후에도 유지되는지 여부) 상태 (활성화 또는 비활성화), 수행 할 작업 및 할당 된 스키마 가 포함되어 있습니다. 섹션 13.1.2 "ALTER EVENT 구문" 을 참조하십시오.
이벤트의 기본 정의는 이벤트가 변경되지 않은 경우, 이벤트를 생성 한 사용자이며, 변경되는 경우, 정의는 그 이벤트에 영향을
ALTER EVENT
문을 마지막으로 실행 한 사용자입니다 . 이벤트가 정의되어있는 데이터베이스에 대한EVENT
권한을 보유하고있는 모든 사용자는 해당 이벤트를 변경할 수 있습니다. 섹션 20.4.6 "이벤트 스케줄러와 MySQL 권한" 을 참조하십시오.이벤트의 액션 문은 스토어드 루틴 내에서 허용되고있는 대부분의 SQL 문을 포함 할 수 있습니다. 제한 내용은 섹션 D.1 "저장 프로그램 제한 사항" 을 참조하십시오.