设为首页 收藏本站
查看: 4273|回复: 0

[经验分享] MySQL的事件

[复制链接]

尚未签到

发表于 2018-9-27 12:13:23 | 显示全部楼层 |阅读模式
MYSQL的事件是5.1新增加的,如果想体验,建议升级版本。  至于语法我就不多说了,手册上讲的很详细,我来说说几个要点以及一些实例。
  注意事项:
  1、EVENT权限是针对模式的(在MYSQL中也就是库的级别),不能对单独表来赋予权限。
  2、必须在全局开启。
  3、性能上的损失一定得考虑到。
  mysql> show variables like '%event%';
  +-----------------+-------+
  | Variable_name   | Value |
  +-----------------+-------+
  | event_scheduler | OFF   |
  +-----------------+-------+
  1 row in set (0.00 sec)
  mysql> set global event_scheduler = on;
  Query OK, 0 rows affected (0.00 sec)
  mysql> use event;
  Database changed
  例子:
  我们来创建一个简单的文章表:
  mysql> create table article (id serial,title varchar(64) not null, author_name varchar(64),content mediumtext not null, create_time datetime not null,update_time datetime not null);
  Query OK, 0 rows affected (0.01 sec)
  以及统计表:
  mysql> create table report (id int not null auto_increment primary key, r_date date not null,aid int not null,total int not null);
  Query OK, 0 rows affected (0.01 sec)
  mysql> 插入测试数据。。。
  我们来建立一个存储过程。
mysql> delimiter ||  mysql> create procedure sp_report()
  -> begin

  -> insert into report(r_date,aid,total) select date(update_time) as r_date,>  -> end||
  Query OK, 0 rows affected (0.00 sec)
  mysql> delimiter ;
  创建EVENT;
  在一分钟后执行这个存储过程。
  mysql> create event report_dawn on schedule at date_add(now(),interval 1 minute) on completion preserve do call sp_report();
  Query OK, 0 rows affected (0.00 sec)
  mysql> show processlist;
  |  7 | event_scheduler | localhost         | NULL   | Daemon  |     5 | Waiting for next activation | NULL             |
  mysql> select * from report;
  Empty set (0.00 sec)
  察看现在的EVENT
  mysql> show create event report_dawn\G
  *************************** 1. row ***************************
  Event: report_dawn
  sql_mode:
  time_zone: SYSTEM
  Create Event: CREATE EVENT `report_dawn` ON SCHEDULE AT '2008-03-21 15:46:57' ON COMPLETION PRESERVE DISABLE DO call sp_report()
  character_set_client: latin1
  collation_connection: latin1_swedish_ci
  Database Collation: utf8_general_ci
  1 row in set (0.00 sec)
  mysql>
  我们来查看更新后的结果:
  mysql> select * from report;
  +----+------------+-----+-------+

  |>  +----+------------+-----+-------+
  |  1 | 2008-03-21 |   1 |     3 |
  |  2 | 2008-03-22 |  16 |     1 |
  |  3 | 2008-03-23 |   4 |     2 |
  |  4 | 2008-03-23 |   6 |     2 |
  |  5 | 2008-03-23 |   7 |     1 |
  |  6 | 2008-03-23 |   8 |     2 |
  |  7 | 2008-03-23 |  10 |     2 |
  |  8 | 2008-04-13 |  12 |     1 |
  |  9 | 2008-04-13 |  13 |     2 |
  +----+------------+-----+-------+
  9 rows in set (0.00 sec)
  现在看看这个EVENT的状态,
  mysql> select event_schema,event_name,status from information_schema.events where event_schema = 'event';
  +--------------+-------------+----------+
  | event_schema | event_name  | status   |
  +--------------+-------------+----------+
  | event        | report_dawn | DISABLED |
  +--------------+-------------+----------+
  1 row in set (0.00 sec)
  已经停止运行了。
  mysql> select * from report;
  +----+------------+-----+-------+

  |>  +----+------------+-----+-------+
  |  1 | 2008-03-21 |   1 |     3 |
  |  2 | 2008-03-22 |  16 |     1 |
  |  3 | 2008-03-23 |   4 |     2 |
  |  4 | 2008-03-23 |   6 |     2 |
  |  5 | 2008-03-23 |   7 |     1 |
  |  6 | 2008-03-23 |   8 |     2 |
  |  7 | 2008-03-23 |  10 |     2 |
  |  8 | 2008-04-13 |  12 |     1 |
  |  9 | 2008-04-13 |  13 |     2 |
  | 10 | 2008-03-21 |   1 |     3 |
  | 11 | 2008-03-22 |  16 |     1 |
  | 12 | 2008-03-23 |   4 |     2 |
  | 13 | 2008-03-23 |   6 |     2 |
  | 14 | 2008-03-23 |   7 |     1 |
  | 15 | 2008-03-23 |   8 |     2 |
  | 16 | 2008-03-23 |  10 |     2 |
  | 17 | 2008-04-13 |  12 |     1 |
  | 18 | 2008-04-13 |  13 |     2 |
  +----+------------+-----+-------+
  18 rows in set (0.00 sec)
  多了9条记录,
  不过默认修改时间后。
  在运行完毕后没有保存它。
  因为时间已经过去了。
  mysql> select event_schema,event_name,status from information_schema.events where event_schema = 'event';
  Empty set (0.00 sec)
  ON COMPLETION [NOT]PRESERVE
  这个选项用来确认事件在执行完毕后是否保存其定义。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-602803-1-1.html 上篇帖子: MYSQL ERROR-11486263 下篇帖子: 使用MySQL Workbench修改表字符集
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表