Mysql 存储过程、事件、触发器学习总结

1、存储过程是通过手动调用才会运行对应对象内容,创建存储过程的部分SQL语句如下:

CREATE PROCEDURE procedure_name(param int(11))

BEGIN

    SQL BODY

END

其中,在最开始和最后面本来应该加上DELIMITER的,但是因为我使用的是MYSQL-Front,然后通过纯命令的方式去添加对应的存储过程,最后都以失败告终;不过,通过右键对应的表格,然后点击新建“存储过程”,在BEGIN和END之间加上我自己的SQL语句,就构成了一个存储过程对象。然后我们在外面,通过“call procedure_name(param)”就可以调用这个存储过程了(其中param是指调用存储过程时我们传入的参数)。

2、事件相当于一个闹钟,我们在定义时间的时候会顺便记录上调用事件的时间段,例如:我们可以每分钟调用一次事件,(这里的事件包含了对应的动作,可以理解为一个具体的SQL语句),比如我们每分钟执行一次select * from table_name;然后再SQL语句后面加上EVERY 1 MINUTE,再加上起始和终止事件,就可以定义一个事件,然后它自己会根据我们设定的时间,定时运行着。

这里给出一个demo:

create event employees_event on schedule every 1 minute starts current_timestamp ends current_timestamp + interval 3 minute
do insert into employees_audit (employeeNumber,lastname,changedat,action) values ('1','Chen',now(),'insert')

其中event是定义事件的关键字,employees_event是事件名称,schedule是关键字,starts后面紧跟的是事件的起始时间,ends后面跟着的是终止事件,interval 3 minute是指事件执行多久,do后面跟着的是事件的主题执行内容部分。最后,这里的事件,一旦创建,马上就会执行,不需要通过call方法跟存储过程一样去调用。

3、触发器跟上面两个不同的是,触发器发生在对物理表进行具体操作的前和后,也就是before和after,我们可以看下在MySQL-Front中新建触发器时的界面(如下图),有动作时间和时间两个栏目,动作时间指的是对表进行操作的前和后,而时间指的是我们这次操作执行的内容,是插入还是更新或者是删除,这里要注意,时间只有insert、update、delete三项,但是例如drop这一动作是不能在触发器执行的。还有一个注意的点,就是在这里面,有一个“OLD”和“NEW”对象,在写触发器内容的时候,NEW指的是本次操作执行后新的触发器,而OLD指的是在执行SQL语句前的对象,例如我叫“张三”,name属性代表我的姓名,我要去更改我的名字,改为“李四”,那么OLD.name指的就是“张三”,“NEW.name”指的就是李四。

 

(本人学术不精,写此文档记录学习,如果不对的地方,望各位批评指正)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值