事件(定时器)和触发器

1、事件 

        事件(event)是MySQL在相应时刻调用存储过程的数据库对象。可以调用一次,也可以周期性的调用。由特定线程“事件调度器”来控制。默认是关闭的,打开后才能使用。

        查看事件调度器是否打开:show varables like 'event_scheduler'—off为关,on为开

        命令行开启事件调度器

                set global event_scheduler=on;                 set global event_scheduler=1;

                set @@global.event_scheduler=on;          set @@global.event_scheduler=1;

        修改配置文件my.ini默认开始事件调度器

                event_scheduler=1;        event_scheduler=on;

        命令行关闭事件调度器或修改配置文件为0或off

        查看调度器执行情况:show processlist;

1.1、创建事件

        create event语句创建一个事件,每个事件主要有两部分组成。

        第一部分是事件(eventschedule),表示启动的时间或频率

        第二部分是动作(调度 event action),事件执行的代码。       

       语法:      create     event     事件名称

                        on     schedule     at某个时间点或every时间点或时间段

                        do      执行的代码;

        例如:

create event e_minute                         #创建名字
on schedule every 1 minute                    #设置每分钟执行一次
starts date_add(now(),interval 10 minute)     #设置开始时间为现在的时间十分中之后
do call myproc();                             #执行对应的存储过程

        查看正在执行的事件:show events;

1.2、修改事件

        alter event event_name on schedule at|every  do  event_body;

1.3、删除事件

        drop event (if exists) event_name;

2、触发器

        触发器事件是指当数据库表进行insert、update、delete操作或视图的操作及对数据库的启动关闭等事件。

2.1、创建触发器

        语法格式:create    trigger     触发器名称

                                  before|after    insert|update|delete    on    表名

                                  for each  row                +语句块        end;

        在DML语句中不能使用控制语句commit,rollback等事务命令。

        insert触发器

create trigger 触发器名称 
before  insert on 表名
for   each  row
begin
    if 条件 then
        signal sqlstate 'HY000' set message_text = '提示内容'
    end if; 
end;

        update触发器        

create trigger 触发器名
before update on 表名
for each row
begin
    if new.列名<old.列名 then    #new指更新后的值,old指更新前的值。
        signal sqlstate 'HY000' set message_text = '需要提示的内容'
    end if;
end;

        delete触发器

create trigger 触发器名称
after delete on 表名
for each row
begin
    #需要执行的内容
end;

        查询触发器        

                查询触发器sql命令:SELECT * FROM information_schema.`TRIGGERS`

        删除触发器

                删除触发器sql命令:drop trigger trigger_name;

        触发器作用:数据确认、实施复杂的安全性检查、做审计跟踪表上的所有数据操作、数据的备份和同步。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值