1.触发器(trigger):
是一个被指定关联到表的数据库对象,与表的关系密切,它不需要用户调用,而是在一个表的特定事件出现时将会被激活,此时某些MySQL语句会自动执行。
2.触发器的创建、删除和使用
(1)创建: delimiter
CREATE TRIGGER名称时间(before/after)事件(insert/update/delete)
ON 表名 FOR EACH ROW begin
触发体语句; end //
delimiter ;
注意:在触发器的创建中,每个表每个事件每次只允许一个触发器,所以每条INSERT,UPDATEDELETE的前或后可创建一个触发器,每个表最多可创建6个触发器
(2)验证使用::
a.INSERT触发器:在INSERT语句执行之前或之后执行。
(a)INSERT触发器的触发体内可引用一个名为NEW的虚拟表来访问被插入的行。(b)在BEFORE INSERT触发器中,NEW中的值可以被更新,但after后不能更新。
b.UPDATE触发器:在UPDATE语句执行之前或之后执行。
(a)UPDATE触发器的触发体内可引用一个名为OLD的虚拟表来访问更新以前的值,
也可引用一个名为NEW的虚拟表来访问更新以后的值。
(b)在BEFORE UPDATE触发器中,NEW中的值可能已被更新,但after后不能更新。(c)OLD中的值不能被更新。
C.DELETE触发器:在DELETE语句执行之前或之后执行。
(a)DELETE触发器的触发体内可引用一个名为OLD的虚拟表来访问被删除的行。(b)OLD中的值不能被更新。
(3)删除:DROPTRIGGER 名称
3.补充说明:
(1)after是先完成数据的增删改,再触发,对new数据不能增删改(2)before是先完成触发,再增删改,对new数据可以增删改;(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 名称