event事件 事件(event)是MySQL在相应的时刻调用的过程式数据库对象。一个事件可调用一次,也可 周期性的启动,它由一个特定的线程来管理的,也就是所谓的“事件调度器”。

事件和触发器类似,都是在某些事情发生的时候启动。当数据库上启动一条语句的时候,触发
器就启动了,而事件是根据调度事件来启动的。由于他们彼此相似,所以事件也称为临时性触发
器。
事件取代了原先只能由操作系统的计划任务来执行的工作,而且MySQL的事件调度器可以精确
到每秒钟执行一个任务,而操作系统的计划任务(如:Linux下的CRON或Windows下的任务计
划)只能精确到每分钟执行一次。
 事件的优缺点
优点
一些对数据定时性操作不再依赖外部程序,而直接使用数据库本身提供的功能。
可以实现每秒钟执行一个任务,这在一些对实时性要求较高的环境下就非常实用了。
缺点:
定时触发,不可以调用。
 事件操作

-- 事件 自动定时器 作业 mysql 5.1 新增
-- 开启关闭事件调度器
-- ON 1 开启事件功能
-- OFF off 0 关闭事件功能
show variables like '%event_scheduler%'
set global event_scheduler = OFF
set global event_scheduler = on;
set @@global.event_scheduler = on;
set global event_scheduler = 1;
set @@global.event_scheduler = 1;
set global event_scheduler = on;
-- event_scheduler
show variables like '%schedule%';
-- 查看数据库 d3中的所有事件对象,运行完的事件对象自动删除。
select `EVENT_NAME` from `INFORMATION_SCHEMA`.`EVENTS`
where `EVENT_SCHEMA` = 'd3'
order by EVENT_NAME;
create event e1
on schedule
at current_timestamp + interval 1 hour
do update myschema.mytable set mycol = mycol + 1;
delimiter //
create event e1 on schedule at current_timestamp + interval 5 second
do select now();
delimiter ;
create event e2 on schedule at '2021-09-14 15:08:00'
do select now();
drop table if exists tt;
create table tt(
id int unsigned auto_increment,
regtime datetime,
primary key(id)
)
select * from tt;
-- 当前系统5秒后执行事件,事件执行就,删除此事件
create event e3 on schedule at current_timestamp + interval 5 second
do insert into tt value(null,now());
-- 10秒后开始,每5秒执行一次 插入
create event e4 on schedule
every 5 second
starts current_timestamp + interval 10 second
do insert into tt value(null,now());
-- 立即开始,每10 秒清空一下表 at starts ends
create event e5 on schedule
every 10 second ends '2021-09-14 15:22:00'
do truncate tt;
drop event e5;
-- 修改事件的名称
alter event ee1 rename to e01
-- 删除事件
drop event if exists e01;
-- 事件暂停禁用,但不删除
alter event e4 disable;
-- 事件启用
alter event e4 enable;
CREATE
[DEFINER = { user | CURRENT_USER }]
EVENT
[IF NOT EXISTS]
event_name
ON SCHEDULE schedule
[ON COMPLETION [NOT] PRESERVE]
[ENABLE | DISABLE | DISABLE ON SLAVE]
[COMMENT 'comment']
DO event_body;
schedule:
AT timestamp [+ INTERVAL interval] ...
| EVERY interval
[STARTS timestamp [+ INTERVAL interval] ...]
[ENDS timestamp [+ INTERVAL interval] ...]
interval:
quantity {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |
WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE |
DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND

MySQL特点

MySQL是一个关系型数据库管理系统由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。

MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型和大型网站的开发都选择 MySQL 作为网站数据库。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐