首页 > 数据库 >MySQL中EVENT的用法

MySQL中EVENT的用法

时间:2022-10-02 10:22:29浏览次数:44  
标签:bak schedule MySQL 用法 stu 事件 EVENT 执行 event

一、Event创建语法

CREATE Event [IF NOT EXISTS] event_name -- 创建使用create event
ON SCHEDULE schedule -- on schedule 什么时候来执行,执行频率
[ON COMPLETION [NOT] PRESERVE] -- 调度计划执行完成后是否还保留
[ENABLE | DISABLE] -- 是否开启事件,默认开启
[COMMENT 'comment'] -- 事件的注释
DO event_body; -- 这个调度计划要做什么?

[IF NOT EXISTS]如果新建的event_name系统里不存在,则创建一个新的,如果已经存在了,则提示已经存在。如果省略的话,系统里不存在新的event_name则创建成功,如果已经存在了,会保存。

[ON COMPLETION [NOT] PRESERVE 如果带了not当事件执行完后,就自动删除,不保留事件。如果不加not事件执行完会保留下来,该项不写的时候,默认是执行完事件保留下来。

[ENABLE | DISABLE]ENABLE时事件开启,当到了事件执行时间,系统会自动执行event_body里定义的语句,如果设置的是DiSABLE则事件关闭,到了执行时间,事件也不会执行。该项没有设置时,默认为事件开启。

[COMMENT 'comment']comment是事件注释,对事件进行解释说明。

event_body事件主体,可以是单条DML语句,可以是多条DML语句,多条时需要写在begin……end之间,也可调用存储过程。

二、执行时间说明

1、单次计划:

  • 在2022年2月1日4点执行一次

  • on schedule at '2022-02-01 04:00:00’

 2、重复计划

  • on schedule every 1 second 每秒执行一次

  • on schedule every 1 minute 每分钟执行一次

  • 也可以是hour、day、week、month、year

 3、指定开始时间的重复计划

  • 每天在20:00:00执行一次

  • on schedule every 1 day starts ‘2022-6-16 20:00:00'

三、如何查看Event

 

查看有哪些event
Show events; 或者通过Select * from information_schema.events;
查看event具体内容
SHOW CREATE EVENT event_name1;
删除event
DROP EVENT event_name;
修改event
可以先删除,再重新创建
也可以ALTER EVENT event_name …… 省略号后边的内容和创建event一样

四、实例

创建一个表stu_bak,用此表来备份student表的数据;

create table stu_bak select * from student;
接着,我们创建存储过程student_bak_pro,用来备份student表中的最新数据
CREATE DEFINER=`root`@`localhost` PROCEDURE `stu_bak_pro`()
BEGIN
insert into stu_bak select * from student t where not EXISTS (select * 
from stu_bak t1 where t1.sno=t.sno);
COMMIT;
END
然后,我们再创建event,让系统每3秒自动执行以下存储过程stu_bak_pro
CREATE Event stu_bak_event
ON SCHEDULE every 3 second
ON COMPLETION PRESERVE
DO call stu_bak_pro();

创建事件,每5秒钟定时删除student表中过期2分钟的数据:

create event del_stu
on schedule every 5 second
on completion preserve
do delete from stu where timestamp< (current_timestamp() + interval -2 minute);

  

标签:bak,schedule,MySQL,用法,stu,事件,EVENT,执行,event
From: https://www.cnblogs.com/conpi/p/16748322.html

相关文章

  • 使用 docker-compose 安装 es、kibana、mysql、redis、kafka
    由于经常的安装虚拟机,每次都要重装环境比较麻烦。这次写了一个docker-compose文件,一次性搞定安装问题。#Useroot/exampleasuser/passwordcredentialsversion:"3......
  • 单机部署MySQL
    一、单机部署MySQL单机部署后面不考虑组集群可以采用此方案,主从集群建议使用StatefulSet方式部署1.1、MySQL密码密码存储在secret,通过环境变量方式挂到容器中mys......
  • pg_eventserv push pg 变动事件到websocket 服务
    pg_eventserv的实现原理并不难,核心还是利用了pg的特性,只是包装了一个方便的golangserver然后我们可以通过webscoket发送出去参考使用CREATETABLEpeople(......
  • MYSQL学习笔记之 表
    (一)语法格式createtable表名(字段名1数据类型,字段名2数据类型...);或createtable表名(字段名1 数据类型,字段名2 数据类型,字段名3 数据类型​);说明:① 表名:建议以t_......
  • 栈的用法详解
    栈的用法详解目录栈的用法详解利用数组模拟栈STLstack典型例题:洛谷P1427小鱼的数字游戏题目描述输入格式输出格式样例#1样例输入#1样例输出#1提示数据规模与约定栈......
  • day02-MySQL基础知识
    MySQL基础知识1.数据库1.1.创建数据库语法:CREATEDATABASE[IFNOTEXISTS]db_name[create_specification[,create_specification]...]create_specification:......
  • MYSQL学习笔记之子查询
    (一)基本介绍     select语句中可以嵌套select语句,被嵌套的select语句被称为子查询。(二)应用场景   select...(select) from...(select) where...(sele......
  • MYSQL学习之连接查询
    (一)连接查询?    从一张表中单独查询,称为单表查询。   emp表和dept表联合起来进行查询数据,从emp表中取员工名字,从dept表中取部门名字,这种跨表查询,多张表联合起来进......
  • Netty 学习(六):创建 NioEventLoopGroup 的核心源码说明
    Netty学习(六):创建NioEventLoopGroup的核心源码说明作者:Grey原文地址:博客园:Netty学习(六):创建NioEventLoopGroup的核心源码说明CSDN:Netty学习(六):创建NioEventLoopG......
  • mysql安装后无法启动,升级/降级/重新安装后无法启动问题mysqld: Can‘t open file: ‘m
    1.报错Loaded:loaded(/usr/lib/systemd/system/mysqld.service;enabled;vendorpreset:disabled)Active:failed(...日志/var/log/mysqld.log...mysqld:C......