本文实例讲述了mysql事件之修改事件(ALTER EVENT)、禁用事件(DISABLE)、启用事件(ENABLE)、事件重命名及数据库事件迁移操作。分享给大家供大家参考,具体如下:

我们要知道,MySQL允许我们更改现有事件的各种属性。如果我们要更改现有事件,可以使用ALTER EVENT语句,如下所示:

ALTER EVENT event_name

ON SCHEDULE schedule

ON COMPLETION [NOT] PRESERVE

RENAME TO new_event_name

ENABLE | DISABLE

DO

event_body

ALTER EVENT语句仅适用于存在的事件,如果我们尝试修改不存在的事件,MySQL将会发出一条错误消息,因此在更改事件之前,应先使用SHOW EVENTS语句检查事件的存在:

mysql> SHOW EVENTS FROM testdb;

+--------+---------------+----------------+-----------+----------+---------------------+----------------+----------------+--------+------+----------+------------+----------------------+----------------------+--------------------+

| Db | Name | Definer | Time zone | Type | Execute at | Interval value | Interval field | Starts | Ends | Status | Originator | character_set_client | collation_connection | Database Collation |

+--------+---------------+----------------+-----------+----------+---------------------+----------------+----------------+--------+------+----------+------------+----------------------+----------------------+--------------------+

| testdb | test_event_02 | root@localhost | SYSTEM | ONE TIME | 2017-08-03 04:24:48 | NULL | NULL | NULL | NULL | DISABLED | 0 | utf8 | utf8_general_ci | utf8_general_ci |

+--------+---------------+----------------+-----------+----------+---------------------+----------------+----------------+--------+------+----------+------------+----------------------+----------------------+--------------------+

1 row in set

创建一个每分钟将一条新记录插入到messages表中的示例事件来演示如何使用ALTER EVENT语句的各种功能:

USE testdb;

CREATE EVENT test_event_04

ON SCHEDULE EVERY 1 MINUTE

DO

INSERT INTO messages(message,created_at)

VALUES('Test ALTER EVENT statement',NOW());

我们来把事件修改为为每2分钟运行一次:

ALTER EVENT test_event_04

ON SCHEDULE EVERY 2 MINUTE;

我们还可以通过指定新的逻辑来更改事件的主体代码:

ALTER EVENT test_event_04

DO

INSERT INTO messages(message,created_at)

VALUES('Message from event',NOW());

-- 清空表中的数据

truncate messages;

修改完成后,可以等待2分钟,再次查看messages表:

mysql> SELECT * FROM messages;

+----+--------------------+---------------------+

| id | message | created_at |

+----+--------------------+---------------------+

| 1 | Message from event | 2017-08-03 04:46:47 |

| 2 | Message from event | 2017-08-03 04:48:47 |

+----+--------------------+---------------------+

2 rows in set

我们可以在ALTER EVENT语句之后使用DISABLE关键字来禁用某个事件:

ALTER EVENT test_event_04

DISABLE;

我们也可以通过使用SHOW EVENTS语句来查看事件的状态:

mysql> SHOW EVENTS FROM testdb;

+--------+---------------+----------------+-----------+-----------+---------------------+----------------+----------------+---------------------+------+----------+------------+----------------------+----------------------+--------------------+

| Db | Name | Definer | Time zone | Type | Execute at | Interval value | Interval field | Starts | Ends | Status | Originator | character_set_client | collation_connection | Database Collation |

+--------+---------------+----------------+-----------+-----------+---------------------+----------------+----------------+---------------------+------+----------+------------+----------------------+----------------------+--------------------+

| testdb | test_event_02 | root@localhost | SYSTEM | ONE TIME | 2017-08-03 04:24:48 | NULL | NULL | NULL | NULL | DISABLED | 0 | utf8 | utf8_general_ci | utf8_general_ci |

| testdb | test_event_04 | root@localhost | SYSTEM | RECURRING | NULL | 2 | MINUTE | 2017-08-03 04:44:47 | NULL | DISABLED | 0 | utf8 | utf8_general_ci | utf8_general_ci |

+--------+---------------+----------------+-----------+-----------+---------------------+----------------+----------------+---------------------+------+----------+------------+----------------------+----------------------+--------------------+

2 rows in set

我们可以在ALTER EVENT语句之后使用ENABLE关键字来启用事件:

ALTER EVENT test_event_04

ENABLE;

查看下事件状态:

mysql> SHOW EVENTS FROM testdb;

+--------+---------------+----------------+-----------+-----------+---------------------+----------------+----------------+---------------------+------+----------+------------+----------------------+----------------------+--------------------+

| Db | Name | Definer | Time zone | Type | Execute at | Interval value | Interval field | Starts | Ends | Status | Originator | character_set_client | collation_connection | Database Collation |

+--------+---------------+----------------+-----------+-----------+---------------------+----------------+----------------+---------------------+------+----------+------------+----------------------+----------------------+--------------------+

| testdb | test_event_02 | root@localhost | SYSTEM | ONE TIME | 2017-08-03 04:24:48 | NULL | NULL | NULL | NULL | DISABLED | 0 | utf8 | utf8_general_ci | utf8_general_ci |

| testdb | test_event_04 | root@localhost | SYSTEM | RECURRING | NULL | 2 | MINUTE | 2017-08-03 04:44:47 | NULL | ENABLED | 0 | utf8 | utf8_general_ci | utf8_general_ci |

+--------+---------------+----------------+-----------+-----------+---------------------+----------------+----------------+---------------------+------+----------+------------+----------------------+----------------------+--------------------+

2 rows in set

我们再来尝试使用ALTER EVENT重命名现有事件:

ALTER EVENT test_event_04

RENAME TO test_event_05;

来查看下事件状态:

mysql> SHOW EVENTS FROM testdb;

+--------+---------------+----------------+-----------+-----------+---------------------+----------------+----------------+---------------------+------+----------+------------+----------------------+----------------------+--------------------+

| Db | Name | Definer | Time zone | Type | Execute at | Interval value | Interval field | Starts | Ends | Status | Originator | character_set_client | collation_connection | Database Collation |

+--------+---------------+----------------+-----------+-----------+---------------------+----------------+----------------+---------------------+------+----------+------------+----------------------+----------------------+--------------------+

| testdb | test_event_02 | root@localhost | SYSTEM | ONE TIME | 2017-08-03 04:24:48 | NULL | NULL | NULL | NULL | DISABLED | 0 | utf8 | utf8_general_ci | utf8_general_ci |

| testdb | test_event_05 | root@localhost | SYSTEM | RECURRING | NULL | 2 | MINUTE | 2017-08-03 04:44:47 | NULL | ENABLED | 0 | utf8 | utf8_general_ci | utf8_general_ci |

+--------+---------------+----------------+-----------+-----------+---------------------+----------------+----------------+---------------------+------+----------+------------+----------------------+----------------------+--------------------+

2 rows in set

完事再来通过使用RENAME TO子句将事件从一个数据库移动到另一个数据库中:

ALTER EVENT testdb.test_event_05

RENAME TO newdb.test_event_05;

再来查看事件状态:

mysql> SHOW EVENTS FROM newdb;

+-------+---------------+----------------+-----------+-----------+------------+----------------+----------------+---------------------+------+---------+------------+----------------------+----------------------+--------------------+

| Db | Name | Definer | Time zone | Type | Execute at | Interval value | Interval field | Starts | Ends | Status | Originator | character_set_client | collation_connection | Database Collation |

+-------+---------------+----------------+-----------+-----------+------------+----------------+----------------+---------------------+------+---------+------------+----------------------+----------------------+--------------------+

| newdb | test_event_05 | root@localhost | SYSTEM | RECURRING | NULL | 2 | MINUTE | 2017-08-03 04:44:47 | NULL | ENABLED | 0 | utf8 | utf8_general_ci | utf8_general_ci |

+-------+---------------+----------------+-----------+-----------+------------+----------------+----------------+---------------------+------+---------+------------+----------------------+----------------------+--------------------+

1 row in set

好啦,本次记录就到这里了。

更多关于MySQL相关内容感兴趣的读者可查看本站专题:《MySQL索引操作技巧汇总》、《MySQL常用函数大汇总》、《MySQL日志操作技巧大全》、《MySQL事务操作技巧汇总》、《MySQL存储过程技巧大全》及《MySQL数据库锁相关技巧汇总》

希望本文所述对大家MySQL数据库计有所帮助。

mysql 禁用事件_mysql事件之修改事件(ALTER EVENT)、禁用事件(DISABLE)、启用事件(ENABLE)、事件重命名及数据库事件迁移操作详解...相关推荐

  1. mysql离散查询_mySQL数据库数据查询操作详解

    查询数据: 简单查询: 1.查询所有数据: select * from 表名 #select * from info 查询所有列 2.查询指定列: select code,name from info ...

  2. sendkeys鼠标点击_selenium操作详解之鼠标键盘事件

    private WebDriver driver; @BeforeTest public void setUp() { System.setProperty("webdriver.chrom ...

  3. MySQL操作之JSON数据类型操作详解

    MySQL操作之JSON数据类型操作详解 这篇文章主要介绍了MySQL操作之JSON数据类型操作详解,内容较为详细,具有收藏价值,需要的朋友可以参考. 概述 mysql自5.7.8版本开始,就支持了j ...

  4. mysql讲事物写到数据库_CookBook/1-MySQL数据库读写锁示例详解、事务隔离级别示例详解.md at master · Byron4j/CookBook · GitHub...

    MySQL数据库读写锁示例详解.事务隔离级别示例详解 锁 性能分:乐观(比如使用version字段比对,无需等待).悲观(需要等待其他事务) 乐观锁,如它的名字那样,总是认为别人不会去修改,只有在提交 ...

  5. php mysql source_Mysql数据库导入命令Source详解

    Mysql数据库导入命令Source详解 几个常用用例: 1.导出整个数据库 mysqldump -u 用户名 -p 数据库名 > 导出的文件名mysqldump -u root -p data ...

  6. 第一章笔记MySQL数据库的安装目录详解

    MySQL数据库的安装目录详解 bin目录:用于存放一些可以执行的文件,如mysql.exe;,mysqld.exe;mysqlshow.exe等. data目录:用于存放一些日志文件以及数据库. i ...

  7. MySQL数据库update语句使用详解

    MySQL数据库update语句使用详解 本篇文章我们来讲讲如何对MySQL数据库进行更新操作,对数据库进行增删改查操作是我们必会的基础之一,会了这个增删改查我们可以在这基础上去编写更多的东西,废话不 ...

  8. 跟我学python之mysql操作详解 一、查询操作

    在python中,我们使用PyMySQL来操作mysql. 一.安装PyMySQL: 使用pip进行安装,命令为: pip install PyMySQL 二.在进行操作之前,首先要打开本机的mysq ...

  9. mysql 查看时区_mysql 查看及修改时区的方法

    方法1#查看时区 show variables like "%time_zone%"; set global time_zone = '+8:00'; ##修改mysql全局时区为 ...

最新文章

  1. a href=# 与javascript:void(0)的区别
  2. python 读取大文件_Python读取大文件
  3. centos 7 局域网丢包排查_宽带发生故障怎么办?教你几招轻松排查
  4. 应用的生命周期各个程序运行状态时代理的回调
  5. acwing2058. 笨拙的手指(进制转换)
  6. MYSQL优化派生表(子查询)在From语句中的
  7. 9.20–9.24 三亚
  8. Android 壁纸设置代码 详解
  9. 初学windows程序设计
  10. 希捷服务器硬盘有什么用,NAS储存有什么用?配置什么硬盘?
  11. MFC程序运行中修改Static Text的Caption属性
  12. 数据可视化实验-茎叶图
  13. 鸿蒙OS分布式任务调度,鸿蒙子系统解读-分布式任务调度篇(下)
  14. 苹果 CEO 库克:我每天晚上 9 点半睡觉,凌晨 4 点起床,希望员工重返线下工作...
  15. Daily English Jun 14,2011
  16. Elastic-Job分布式任务调度
  17. Wopus问答第一期
  18. 剑指offer:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。
  19. 设计模式之过滤器模式(摘自菜鸟驿站)
  20. Beautiful Soup的使用

热门文章

  1. 千寻位置服务器地址和端口,全球最大规模高精度定位路测,多场景力证千寻位置服务和算法...
  2. plink --extract参数采坑问题记录
  3. 缺陷管理:说一说bug的状态和解决方案
  4. 用户答疑:“我想做一个社区,如何进行社区的定位和推广?”
  5. 游戏ai人工智能_为什么游戏AI无法帮助AI在现实世界中发挥作用,但可以
  6. Opencv调取摄像头失败的处理方法
  7. 解决ERROR Error: Cannot find module ‘@sentry/webpack-plugin‘,或Unable to download sentry-cli binary 问题
  8. 1、手机调试app出现签名不一致,该应用可能已被修改
  9. 等到中心化的平台不再,衍生于这个平台的一切都将化作泡影
  10. ssh隧道远程mysql_利用SSH隧道方式连接远程MySQL服务器