zoukankan      html  css  js  c++  java
  • 事件[EVENT]

    1.事件的基本概念:

    事件和触发器相似,都是在某些事情发生的时候启动,因此事件也可称为临时触发器。其中,事件是基于特定时间周期触发来执行某些任务,而触发器是基于某个表所产生的事件触发的,它们的区别也在于此。

    注意:在使用事件调度器之前必须保证mysql中EVENT_SCHEDULER已被开启。

    2. 查看事件调度器(on表示开启,off表示未开启)

    查看当前是否开启了event scheduler三种方法:

    1) SHOW VARIABLES LIKE ‘event_scheduler’; #或:show VARIABLES LIKE '%sche%';
    
    2) SELECT @@event_scheduler;
    3) SHOW PROCESSLIST;(是否有State为:Waiting for next activation的进程,User为event_scheduler)#查看进程列表

    Id: 进程号

       User:  用户

       Host:  主机名

         db:  相关数据库

    Command:  指令要做什么

       Time:  执行时间

      State:  状态

       Info:  输入的指令

    注:“Waiting for next activation” –是指等待下一次“进程”激活

    如图所示:

     

    注:在Mysql启动时如果在my.cnf设置了event_scheduler=ON(OFF or 1 or 0)时,就不能在运行时修改为DISABLED,如果设置event_scheduler=DISABLED时,就不能在运行时修改其值为ON ( OFF or 1 or 0)。

    【修改配置文件】

    windows下修改my.ini文件中加上 EVENT_SCHEDULER=1或 EVENT_SCHEDULER=ON来开启。

    Linux 下修改my.cnf文件中加上 EVENT_SCHEDULER=1或 EVENT_SCHEDULER=ON来开启。

      方法一:mysql> Show variables like 'EVENT_SCHEDULER';

     

     方法二:SELECT @@EVENT_SCHEDULER;

     

    3. 开启事件调度器

      方式一:SET GLOBAL EVENT_SCHEDULER=1;

    方式二:SET GLOBAL EVENT_SCHEDULER=TRUE;

     

    【应会部分】:

    1. 创建事件

       语法:CREATE EVENT 【IF NOT EXISTS】 事件名称 ON SCHEDULE 执行事件时间间隔【ENABLE|DISABLE|DISABLE ON SLAVE】

    DO 事件内容

    语法说明:执行事件事件间隔分别对应两种子句:

                AT timestamp【+INTERVAL interval】...|EVERY interval【START timestamp【+INTERVAL interval】...】【ENDS timestamp【+INTERVAL interval】...】

    *1、AT子句:AT  timestamp 【+INTERVAL interval】,表示:在这个时间间隔后事件发生,用于指定事件在某时刻发生,其中timestamp为具体某一时间点

    *2、EVERY子句:EVERY interval【START timestamp【+INTERVAL interval】...】【ENDS timestamp【+INTERVAL interval】...】

    表示事件在指定时间区域内每隔多长时间发生一次,其中start 表示开始时间,ends表示结束时间

    *interval语法格式

    数值{YEAR/ /MONTH/DAY/HOUR/MINUTE/WEEK/SECOND/YEAR_MONTH/DAY_HOUR/DAY_MINUTE/DAY_SECONDE/HOUR_MINUTE/HOUR_SECOND/MINUTE_SECOND}

    *事件内容有多个的时候可用begin.....end复合结构

    *3、ENABLE|DISABLE|DISABLE ON SLAVE:表示事件的一种属性,

    enable表示事件是活动的,活动意味着调度器检查事件动作事都必须调用

    disable表示事件是关闭的,关闭意味着事件的声明存储到目录中,但调度器不会检查它是否应该被调用

    disable on slave表示事件在从机关是关闭的

    如果不指定任何选项,则一个事件创建完后,它立即变为活动的。

    4、实例

     例1:创建一个事件,在当前数据库下,当前时间创建一个test表,包含字段name,date

    use db_school
    
    Create event if not exists event_create
    
    on schedule at now()
    
    Do create table test(name varchar(20),date varchar(20));

    例2:创建一个事件从现在开始到2分钟后结束,每隔10s往test表中插入数据

    create event event_insert on schedule
    
    Every 10 second
    
    Starts now()
    
    Ends now() + interval 2 minute
    
    Do insert into test values(‘’,now());

    例3:创建一个一分钟后清空test数据表中的数据

    create event evetn_delete on schedule
    
    At now() + interval 1 minute
    
    Do delete from test;

    例4:在数据库db_school中创建一个事件,用于每个月向表tb_student中插入一条数据, create event if not exists event_insert

    on schedule every 1month
    
    starts curdate()+interval 1 month
    
    Ends ‘2018-06-08’
    
    Do
    
    Begin
    
    If year(curdate())<2020 then
    
    Insert into tb_student values(null,’张晓勇’,’男’,’1977-12-11’,’山西’,’汉’,’AC1301’);
    
    End if;
    
    End$$

    5、修改事件

    语法: ALTER EVENT 事件名【ON SCHEDULER schedule】【RENAME TO  新事件名称】【ENABLE|DISABLE|DISABLE ON SLAVE】【DO 事件】

    例5、临时关闭例2中创建的事件

    alter event event_insert disable;

    例6、修改例2中事件名称且再次开启

    alter event event_insert rename to event_insert1 enable;

    6、删除事件

    语法:DROP EVENT【IF EXISTS】 事件名称

    例7:删除事件event_insert1

    drop event event_insert1;
     
  • 相关阅读:
    python日期格式化,字符串格式化
    python3+django+mysql
    django ORM排序
    CentOS7 编译安装python3.5
    笔记
    python添加pip本地源
    centos7 安装chrome浏览器
    mysql 存储过程-1基础
    mysql中的describe语法 以及查看 当前库中所有表和字段信息
    python 可变类型和不可变类型
  • 原文地址:https://www.cnblogs.com/Jackbk/p/12692146.html
Copyright © 2011-2022 走看看