版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_36285124/article/details/60576854
先来看一下它的语法:
CREATE EVENT [IF NOT EXISTS] event_name
ON SCHEDULE schedule
[ON COMPLETION [NOT] PRESERVE]
[ENABLE | DISABLE]
[COMMENT ‘comment’]
DO sql_statement / call proce() ; –这可以是sql语句或 call 存储过程名()
schedule:
AT TIMESTAMP [+ INTERVAL INTERVAL]
| EVERY INTERVAL [STARTS TIMESTAMP] [ENDS TIMESTAMP]
INTERVAL:
quantity {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |
WEEK | SECOND | YEAR_MONTH
以上比较官方,我们通过一个例子来直观的理解一下:
- 首先创建一个测试test表格
CREATE TABLE IF NOT EXISTS test(
id INT PRIMARY KEY AUTO_INCREMENT,
message VARCHAR(255) NOT NULL,
created_at DATETIME NOT NUL); - 使用SQL语句创建事件
CREATE EVENT IF NOT EXISTS test_event_01
ON SCHEDULE AT CURRENT_TIMESTAMP
DO
INSERT INTO test(message,created_at)
VALUES(‘测试MySQL事件执行(1)’,NOW());
此时刷新测试表就会出现插入了一条数据,这只是利用事件执行了一次我们来试着让它自动执行多次 - 以下语句创建每隔一分钟执行一次并且在创建时间后1小时内过期的重复事件:
CREATE EVENT test_event_03
ON SCHEDULE EVERY 1 MINUTE
STARTS CURRENT_TIMESTAMP
ENDS CURRENT_TIMESTAMP + INTERVAL 1 HOUR
DO
INSERT INTO test(message,created_at)
VALUES(‘测试MySQL重复事件’,NOW());
当然可以通过这些方法来仔细去体会每个参数的用法,建议使用数据库图形化工具来创建事件会简单很多,因为工具会利用图形化的方式帮助我们创建各种我们所需参数,希望可以帮助大家。