Loading...
MySQL 9.5 Reference Manual 9.5의 28.3.14 The INFORMATION_SCHEMA EVENTS Table의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
EVENTS 테이블은 Section 27.5, “Using the Event Scheduler”에서 설명하는 Event Manager 이벤트에 대한 정보를 제공합니다.
EVENTS 테이블에는 다음과 같은 컬럼이 있습니다:
EVENT_CATALOG
이벤트가 속한 카탈로그의 이름입니다. 이 값은 항상 def입니다.
EVENT_SCHEMA
이벤트가 속한 스키마(데이터베이스)의 이름입니다.
EVENT_NAME
이벤트의 이름입니다.
DEFINER
DEFINER 절에 명시된 계정입니다(보통 이벤트를 생성한 사용자).
'user_name'@'host_name' 형식입니다.
TIME_ZONE
이벤트 타임존입니다. 이벤트의 스케줄링에 사용되며, 이벤트가 실행될 때 이벤트 내부에서 적용되는 타임존입니다. 기본값은 SYSTEM입니다.
EVENT_BODY
이벤트의 DO 절에 있는 구문에 사용되는 언어입니다. 값은 항상 SQL입니다.
EVENT_DEFINITION
이벤트의 DO 절을 구성하는 SQL 구문의 텍스트입니다. 즉, 이 이벤트가 실행하는 구문입니다.
EVENT_TYPE
이벤트 반복 유형입니다. ONE TIME(일회성) 또는 RECURRING(반복) 중 하나입니다.
EXECUTE_AT
일회성 이벤트의 경우, 이벤트를 생성한 CREATE EVENT 구문의 AT 절에 지정된 DATETIME 값이거나, 이벤트를 수정한 마지막 ALTER EVENT 구문의 AT 절에 지정된 값입니다. 이 컬럼에 표시되는 값은 이벤트의 AT 절에 포함된 어떤 INTERVAL 값의 더하기 또는 빼기를 반영합니다. 예를 들어, 이벤트가 ON SCHEDULE AT CURRENT_TIMESTAMP + '1:6' DAY_HOUR로 생성되었고, 이벤트가 2018-02-09 14:05:30에 생성되었다면, 이 컬럼에 표시되는 값은 '2018-02-10 20:05:30'입니다. 이벤트의 타이밍이 AT 절이 아니라 EVERY 절에 의해 결정되는 경우(즉, 이벤트가 반복 이벤트인 경우), 이 컬럼의 값은 NULL입니다.
INTERVAL_VALUE
반복 이벤트의 경우, 이벤트 실행 사이에 기다릴 인터벌의 개수입니다. 일시적 이벤트의 경우, 값은 항상 NULL입니다.
INTERVAL_FIELD
반복 이벤트가 반복되기 전에 기다리는 인터벌에 사용되는 시간 단위입니다. 일시적 이벤트의 경우, 값은 항상 NULL입니다.
SQL_MODE
이벤트가 생성되거나 변경될 때 적용되며, 이벤트가 실행될 때도 적용되는 SQL 모드입니다. 사용 가능한 값에 대해서는 Section 7.1.11, “Server SQL Modes”를 참조하십시오.
STARTS
반복 이벤트의 시작 날짜와 시간입니다. DATETIME 값으로 표시되며, 이벤트에 대해 시작 날짜와 시간이 정의되지 않은 경우 NULL입니다. 일시적 이벤트의 경우, 이 컬럼은 항상 NULL입니다. 정의에 STARTS 절이 포함된 반복 이벤트의 경우, 이 컬럼에는 해당 DATETIME 값이 들어 있습니다. EXECUTE_AT 컬럼과 마찬가지로, 이 값은 사용된 모든 표현식을 해석한 값입니다. 이벤트의 타이밍에 영향을 미치는 STARTS 절이 없으면, 이 컬럼은 NULL입니다.
ENDS
정의에 ENDS 절이 포함된 반복 이벤트의 경우, 이 컬럼에는 해당 DATETIME 값이 들어 있습니다. EXECUTE_AT 컬럼과 마찬가지로, 이 값은 사용된 모든 표현식을 해석한 값입니다. 이벤트의 타이밍에 영향을 미치는 ENDS 절이 없으면, 이 컬럼은 NULL입니다.
STATUS
이벤트 상태입니다. ENABLED, DISABLED, 또는 REPLICA_SIDE_DISABLED 중 하나입니다(이전 MySQL 8.2.0까지는 SLAVESIDE_DISABLED였으며, 현재는 사용 중단(deprecated)되었습니다). REPLICA_SIDE_DISABLED는 이벤트의 생성이 복제 소스 역할을 하는 다른 MySQL 서버에서 발생하여 레플리카 역할을 하는 현재 MySQL 서버로 복제되었지만, 현재 이 레플리카에서 이벤트가 실행되고 있지 않음을 나타냅니다. 자세한 내용은 Section 19.5.1.16, “Replication of Invoked Features”를 참조하십시오.
ON_COMPLETION
PRESERVE 또는 NOT PRESERVE 둘 중 하나의 값입니다.
CREATED
이벤트가 생성된 날짜와 시간입니다. TIMESTAMP 값입니다.
LAST_ALTERED
이벤트가 마지막으로 수정된 날짜와 시간입니다. TIMESTAMP 값입니다. 이벤트가 생성된 이후로 수정되지 않았다면, 이 값은 CREATED 값과 동일합니다.
LAST_EXECUTED
이벤트가 마지막으로 실행된 날짜와 시간입니다. DATETIME 값입니다. 이벤트가 한 번도 실행되지 않은 경우, 이 컬럼은 NULL입니다.
LAST_EXECUTED는 이벤트가 시작된 시점을 나타냅니다. 결과적으로, ENDS 컬럼은 LAST_EXECUTED보다 작을 수 없습니다.
EVENT_COMMENT
이벤트에 코멘트가 있는 경우, 그 코멘트의 텍스트입니다. 그렇지 않으면 이 값은 빈 값입니다.
ORIGINATOR
이벤트가 생성된 MySQL 서버의 서버 ID입니다. 복제에 사용됩니다. 이 값은 복제 소스에서 실행되는 경우, ALTER EVENT에 의해 해당 구문이 실행된 서버의 서버 ID로 업데이트될 수 있습니다. 기본값은 0입니다.
CHARACTER_SET_CLIENT
이벤트가 생성될 때의 character_set_client 시스템 변수의 세션 값입니다.
COLLATION_CONNECTION
이벤트가 생성될 때의 collation_connection 시스템 변수의 세션 값입니다.
DATABASE_COLLATION
이벤트가 연관된 데이터베이스의 콜레이션입니다.
EVENTS는 비표준 INFORMATION_SCHEMA 테이블입니다.
EVENTS 테이블의 시간은 Section 27.5.4, “Event Metadata”에 설명된 대로 이벤트 타임존, 현재 세션 타임존 또는 UTC를 사용하여 표시됩니다.
REPLICA_SIDE_DISABLED와 ORIGINATOR 컬럼에 대한 자세한 정보는 Section 19.5.1.16, “Replication of Invoked Features”를 참조하십시오.
사용자 'jon'@'ghidora'가 e_daily라는 이름의 이벤트를 생성한 다음, 몇 분 후에 아래와 같이 ALTER EVENT 구문을 사용해 이벤트를 수정한다고 가정해 봅니다:
1DELIMITER | 2 3CREATE EVENT e_daily 4 ON SCHEDULE 5 EVERY 1 DAY 6 COMMENT 'Saves total number of sessions then clears the table each day' 7 DO 8 BEGIN 9 INSERT INTO site_activity.totals (time, total) 10 SELECT CURRENT_TIMESTAMP, COUNT(*) 11 FROM site_activity.sessions; 12 DELETE FROM site_activity.sessions; 13 END | 14 15DELIMITER ; 16 17ALTER EVENT e_daily 18 ENABLE;
(comment는 여러 줄에 걸쳐 작성될 수 있다는 점에 유의하십시오.)
이 사용자는 다음 SELECT 구문을 실행하여 아래에 표시된 출력 결과를 얻을 수 있습니다:
1mysql> SELECT * FROM INFORMATION_SCHEMA.EVENTS 2 WHERE EVENT_NAME = 'e_daily' 3 AND EVENT_SCHEMA = 'myschema'\G 4*************************** 1. row *************************** 5 EVENT_CATALOG: def 6 EVENT_SCHEMA: myschema 7 EVENT_NAME: e_daily 8 DEFINER: jon@ghidora 9 TIME_ZONE: SYSTEM 10 EVENT_BODY: SQL 11 EVENT_DEFINITION: BEGIN 12 INSERT INTO site_activity.totals (time, total) 13 SELECT CURRENT_TIMESTAMP, COUNT(*) 14 FROM site_activity.sessions; 15 DELETE FROM site_activity.sessions; 16 END 17 EVENT_TYPE: RECURRING 18 EXECUTE_AT: NULL 19 INTERVAL_VALUE: 1 20 INTERVAL_FIELD: DAY 21 SQL_MODE: ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES, 22 NO_ZERO_IN_DATE,NO_ZERO_DATE, 23 ERROR_FOR_DIVISION_BY_ZERO, 24 NO_ENGINE_SUBSTITUTION 25 STARTS: 2018-08-08 11:06:34 26 ENDS: NULL 27 STATUS: ENABLED 28 ON_COMPLETION: NOT PRESERVE 29 CREATED: 2018-08-08 11:06:34 30 LAST_ALTERED: 2018-08-08 11:06:34 31 LAST_EXECUTED: 2018-08-08 16:06:34 32 EVENT_COMMENT: Saves total number of sessions then clears the 33 table each day 34 ORIGINATOR: 1 35CHARACTER_SET_CLIENT: utf8mb4 36COLLATION_CONNECTION: utf8mb4_0900_ai_ci 37 DATABASE_COLLATION: utf8mb4_0900_ai_ci
이벤트 정보는 SHOW EVENTS 구문을 통해서도 얻을 수 있습니다. Section 15.7.7.20, “SHOW EVENTS Statement”를 참조하십시오. 다음 구문들은 동등합니다:
1SELECT 2 EVENT_SCHEMA, EVENT_NAME, DEFINER, TIME_ZONE, EVENT_TYPE, EXECUTE_AT, 3 INTERVAL_VALUE, INTERVAL_FIELD, STARTS, ENDS, STATUS, ORIGINATOR, 4 CHARACTER_SET_CLIENT, COLLATION_CONNECTION, DATABASE_COLLATION 5 FROM INFORMATION_SCHEMA.EVENTS 6 WHERE table_schema = 'db_name' 7 [AND column_name LIKE 'wild'] 8 9SHOW EVENTS 10 [FROM db_name] 11 [LIKE 'wild']
28.3.13 The INFORMATION_SCHEMA ENGINES Table
28.3.15 The INFORMATION_SCHEMA FILES Table