触发器

本文介绍了MySQL中触发器的创建、删除及查看方法,强调了触发器在数据完整性方面的作用。触发器只能应用于永久表,不能对临时表创建,并且支持行级触发,不支持语句级触发。在不同操作中,触发器的执行顺序有所不同,如在insert操作中,before insert和after insert的执行顺序取决于记录是否存在。此外,触发器不能直接返回数据,但可以通过存储过程的参数传递数据。
摘要由CSDN通过智能技术生成

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触发器的顺序执行的,其中任何一步操作发生错误都不会继续执行剩下的操作。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值