MySQL 이벤트 스케줄 러 간단 한 응용
만 들 기, 수정, 보기 등 문법 참고 홈 페이지 문서 링크,http://dev.mysql.com/doc/refman/5.6/en/create-event.html이벤트 생 성 (CREATE 이벤트)
먼저 그것 의 문법 을 살 펴 보 자.
CREATE EVENT [IF NOT EXISTS] event_name
ON SCHEDULE schedule
[ON COMPLETION [NOT] PRESERVE]
[ENABLE | DISABLE]
[COMMENT 'comment']
DO sql_statement;
schedule:
AT TIMESTAMP [+ INTERVAL INTERVAL]
| EVERY INTERVAL [STARTS TIMESTAMP] [ENDS TIMESTAMP]
INTERVAL:
quantity {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |
WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE |
DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND}
자세 한 설명:
①definer: event , , 。
, definer = current_user;
definer, :
1. super , , 。
2. super , ; , 。
②if not exists: , , 。
③on schedule : ,
1)at timestamp ,timestamp ( , warning), datetime ( current_timestamp):
, at timestamp, :at '2017-08-08 08:08:08';
, interval (interval ,at timestamp + INTERVAL 2 HOUR、 + INTERVAL 30 MINUTE)
2)every , , :EVERY 1 MINUTE。
,every , STARTS ENDS ,
:EVERY 12 HOUR STARTS CURRENT_TIMESTAMP + INTERVAL 30 MINUTE ENDS CURRENT_TIMESTAMP + INTERVAL 4 WEEK。
④ , , 。 ,create event on completion preserve 。
:ON COMPLETION NOT PRESERVE,
⑤ ,enable on slave, ; disable 。
⑦do , SQL , begin...end , 。
기본 형식:
CREATE EVENT event_name
ON SCHEDULE
DO ;
실례 1: 먼저 간단 한 예 를 보 겠 습 니 다.
테스트 테이블 생 성:
CREATE TABLE `test1_event` (
`id` int(8) NOT NULL AUTO_INCREMENT,
`username` varchar(20) COLLATE utf8_unicode_ci NOT NULL,
`password` varchar(20) COLLATE utf8_unicode_ci NOT NULL,
`create_time` varchar(20) COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`) # ID
) ENGINE=innodb AUTO_INCREMENT=0 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
타이머 이벤트 만 들 기1: 현재 시간 2 분 후 오픈 10 초 마다 표 test 1 에 기록 하 나 를 삽입event
CREATE EVENT event_1
ON SCHEDULE EVERY 10 SECOND
STARTS CURRENT_TIMESTAMP + INTERVAL 2 MINUTE
DO insert into test.test1_event(username,password,create_time) values (" ","tomcat",now());
mysql> select * from test1_event;
+----+----------+----------+---------------------+
| id | username | password | create_time |
+----+----------+----------+---------------------+
| 1 | | tomcat | 2018-09-14 20:49:55 |
| 2 | | tomcat | 2018-09-14 20:50:05 |
| 3 | | tomcat | 2018-09-14 20:50:15 |
| 4 | | tomcat | 2018-09-14 20:50:25 |
| 5 | | tomcat | 2018-09-14 20:50:35 |
| 6 | | tomcat | 2018-09-14 20:50:45 |
| 7 | | tomcat | 2018-09-14 20:50:55 |
+----+----------+----------+---------------------+
7 rows in set (0.00 sec)
타이머 이벤트 만 들 기2: 현재 시간 1 분 후 오픈 5 초 마다 표 test 2 에 기록 하 나 를 삽입event
delimiter $$
create event event_2
on schedule every 5 second STARTS CURRENT_TIMESTAMP + INTERVAL 1 MINUTE
COMMENT 'xiaowu create'
do
BEGIN
insert into test.test2_event(username,password,create_time) values(" ","tomcat",now());
END $$
delimiter ;
mysql> select * from test2_event;
+-----+----------+----------+---------------------+
| id | username | password | create_time |
+-----+----------+----------+---------------------+
| 1 | | tomcat | 2018-09-14 20:50:06 |
| 2 | | tomcat | 2018-09-14 20:50:11 |
| 3 | | tomcat | 2018-09-14 20:50:16 |
| 4 | | tomcat | 2018-09-14 20:50:21 |
| 5 | | tomcat | 2018-09-14 20:50:26 |
| 6 | | tomcat | 2018-09-14 20:50:31 |
| 7 | | tomcat | 2018-09-14 20:50:36 |
+-----+----------+----------+---------------------+
213 rows in set (0.00 sec)
이벤트 보기: show events;
이벤트 상태 정보 보기:
mysql> select * from information_schema.events limit 2,3\G
*************************** 1. row ***************************
EVENT_CATALOG: def
EVENT_SCHEMA: test
EVENT_NAME: event_2
DEFINER: root@localhost
TIME_ZONE: SYSTEM
EVENT_BODY: SQL
EVENT_DEFINITION: BEGIN
insert into test.test2_event(username,password,create_time) values(" ","tomcat",now());
END
EVENT_TYPE: RECURRING
EXECUTE_AT: NULL
INTERVAL_VALUE: 5
INTERVAL_FIELD: SECOND
SQL_MODE: STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION
STARTS: 2018-09-14 20:50:06
ENDS: NULL
STATUS: ENABLED
ON_COMPLETION: NOT PRESERVE
CREATED: 2018-09-14 20:48:06
LAST_ALTERED: 2018-09-14 20:48:06
LAST_EXECUTED: 2018-09-14 21:01:01
EVENT_COMMENT: xiaowu create
ORIGINATOR: 1131053306
CHARACTER_SET_CLIENT: utf8
COLLATION_CONNECTION: utf8_general_ci
DATABASE_COLLATION: utf8_general_ci
*************************** 2. row ***************************
EVENT_CATALOG: def
EVENT_SCHEMA: test
EVENT_NAME: event_1
DEFINER: root@localhost
TIME_ZONE: SYSTEM
EVENT_BODY: SQL
EVENT_DEFINITION: insert into test.test1_event(username,password,create_time) values (" ","tomcat",now())
EVENT_TYPE: RECURRING
EXECUTE_AT: NULL
INTERVAL_VALUE: 10
INTERVAL_FIELD: SECOND
SQL_MODE: STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION
STARTS: 2018-09-14 20:49:55
ENDS: NULL
STATUS: DISABLED
ON_COMPLETION: NOT PRESERVE
CREATED: 2018-09-14 20:47:55
LAST_ALTERED: 2018-09-14 20:53:15
LAST_EXECUTED: 2018-09-14 20:53:05
EVENT_COMMENT:
ORIGINATOR: 1131053306
CHARACTER_SET_CLIENT: utf8
COLLATION_CONNECTION: utf8_general_ci
DATABASE_COLLATION: utf8_general_ci
2 rows in set (0.00 sec)
mysql>
이벤트 닫 기:
mysql> alter event event_1 disable;
Query OK, 0 rows affected (0.00 sec)
메모: 이 벤트 를 수 동 으로 닫 은 후 MySQL 을 다시 시작 하 더 라 도 이 벤트 는 다시 시작 되 지 않 습 니 다. MySQL alter 이벤트 이벤트 이벤트 에 로그 인하 여 실행 해 야 합 니 다1 enable; 이벤트 이벤트 오픈1.
어떤 이벤트 alter 이벤트 이벤트 수 동 오픈1 enable;
이벤트 삭제: drop 이벤트 이벤트1;
인 스 턴 스 2: 2 분 후 test 2 비우 기이벤트 테이블:
CREATE EVENT event_4
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 2 MINUTE
DO TRUNCATE TABLE test.test2_event;
,
mysql> select * from test2_event;
+----+----------+----------+---------------------+
| id | username | password | create_time |
+----+----------+----------+---------------------+
| 1 | | tomcat | 2018-09-14 21:12:26 |
| 2 | | tomcat | 2018-09-14 21:12:31 |
| 3 | | tomcat | 2018-09-14 21:12:36 |
| 4 | | tomcat | 2018-09-14 21:12:41 |
+----+----------+----------+---------------------+
4 rows in set (0.00 sec)
2018 년 9 월 06 일 17 시 15 분 정각에 test 표를 비 웁 니 다.
CREATE EVENT a_test
ON SCHEDULE AT TIMESTAMP '2018-09-06 17:10:00'
DO TRUNCATE TABLE test.aaa;
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Redash를 사용할 때 몰랐던 SQL을 쓰는 법을 배웠습니다.최근 redash에서 sql을 쓸 기회가 많고, 이런 쓰는 방법이 있었는지와 sql에 대해 공부를 다시하고 있기 때문에 배운 것을 여기에 씁니다. Redash란? 월별로 데이터를 표시하고 싶습니다 주별로 데이터를 표...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.