触发器

来源:互联网 发布:试题软件 编辑:程序博客网 时间:2024/06/05 03:42

1、创建触发器

(1)触发器可以协助应用在数据库端确保数据的完整性。

(2)触发器只能创建在永久表。不能对临时表创建触发器。

(3)create trigger trigger_name triger_time trigger_event  on  tbl_name  for each row trigger_stmt

trigger_time:触发时间,可以是before(在检查约束前触发)或者after(在检查约束后触发

trigger_event:触发事件,可以是insert、update、delete

(4)对同一个表,相同触发时间的相同触发事件,只能定义一个触发器。

(5)使用别名old和new来引用触发器中发生变化的记录内容。支持行级触发,不支持语句级触发。

(6)对于有重复记录、需要进行update操作的insert,触发器出发的顺序是before insert、before update、after updare

对于没有重复记录的insert,触发的顺序是before insert、after insert

对于实际执行update操作的记录,仍然会执行before insert触发器的内容。


2、删除触发器

一次删除一个:drop trigger [schema.]trigger_name

3、查看触发器(每次返回所有的触发器信息)

show griggers \G;

系统表的information_schema.triggers表:show triggers

4、触发器的作用

触发程序不能调用将数据返回客户端的存储程序,也不能使用采用CALL语句的动态SQL语句,但是允许存储程序通过参数将数据返回触发程序。也就是存储过程或者函数通过out或者input类型的参数将昂数据返回触发器是可以的,但是不能调用直接返回数据的过程。

不能在触发器中使用以显示或隐式方式开始或结束事务的语句,如start transaction、commit或rollback


MySQL的触发器是按照before触发器、行操作、after触发器的顺序执行的,其中任何一步操作发生错误都不会继续执行剩下的操作。


0 0
原创粉丝点击