第11章 触发器和事件
1.触发器(trigger):
是一个被指定关联到表的数据库对象,与表的关系密切,它不需要用户调用,而是在一个表的特定事件出现时将会被激活,此时某些MySQL语句会自动执行
2.触发器的创建、制除和使用
(1)创建: dellimiter //
CREATE TRIGGER 名称时间(before/after)事件(insert/update/delete)
ON 表名FOR EACH ROW begin
触发体语句: end // delimiter;
注意:在触发器的创建中,每个表每个事件每次只允许一个触发器,所以每条INSERT,UPDATEDELETE的前或后可创建一个触发器,每个表最多可创建6个触发器。(2) 验证使用::
aINSERT触发器:在INSERT语句执行之前或之后执行。
(a)NERT触发器的触发体内可引用一个名为NEW的拟表来访问被播入的行。(b)在BEFOREINSERT触发器中,NEW中的值可以被更新,但after后不能更新。
b.UPDATE触发器:在UPDATE逝句执行之前成之后执行。
(a)UPDATE触发器的触发体内可引用一个名为OLD的虚拟表来访问更新以前的值
也可引用一个名为NEW的虚拟表来访问更新以后的值。
(b)在BEFORE UPDATE触发器中,NEW中的值可能已被更新,但after后不能更新。(c)OLD中的值不能被更新。
CDELETE触发器:在DELETE语句执行之前现之后执行。
(a)DELETE触发器的触发体内可引用一个名为OLD的虑拟表来访问被删除的行。(b)OLD中的值不能被更新。
(3)副除:DROPTRIGGER 名称
3.补充说明:
未读0条
(1)after是先完成数据的增删改,再触发,对new数据不能增删改;(2)before是先完成触发,再增制改,对new数据可以增删改;(3)after和before都不能对old数据增制改。
4.事件(Event):
(3)after和before都不能对old数据增删改。
4.事件(Event):
是在指定时刻才被执行的过程式数据库对象
(1)通过MySQL中一个很有特色的功能模块一事件调度器(Event Scheduler)进行监视,并确定其是否需要被调用。(2)事件调度器可以精确到每秒钟执行一个任务,比操作系统的计划任务更具实时优势。
(3)事件和触发器相似,都是在某些事情发生时启动,由于它们相似,所以事件又称为临时触发器(Temporal Trigger(4)区别:触发器是基于某个表所产生的事件触发的,而事件是基于特定的时间周期来触发的。(5)使用事件调度器之前,必须确保开启事件调度器。
5.事件的创建、修改和删除
(1)创建: delimiter //
create event 名称
on schedule 时间(at/every) do
begin
事件语句: end //
delimiter:
(2)修改: alter event名称(3)删除:drop event 名称