欢迎大家来到IT世界,在知识的湖畔探索吧!
一、触发器:
1、触发器概述:触发器是一种特殊类型的存储过程,通过事件进行触发来自动调用执行SQL语句或存储过程。与存储过程不同的是,它是通过事件触发,而存储过程是通过调用存储过程名来执行。
2、触发器分类:
1)DDL触发器:叫做数据定义语言触发器,在运行触发 DDL 触发器的 DDL 语句后,DDL 触发器才会激发。DDL 触发器无法作为 INSTEAD OF 触发器使用。 对于影响局部或全局临时表和存储过程的事件,不会触发 DDL 触发器。
2)DML触发器:叫做数据操作语言触发器,在对表进行UPDATE、DELETE、INSERT操作时、系统会自动调用该表上对应的触发器,进而执行事先定义好的SQL语句或存储过程。同时,将触发器和触发它的语句作为可在触发器内回滚的单个事务对待, 如果检测到错误(例如,磁盘空间不足),则整个事务即自动回滚。
3、触发器应用场景:
1)数据验证和完整性约束:通过触发器可以实现对数据的验证和完整性约束,例如检查数据的有效性、确保参照完整性等。
2)数据变化记录:触发器可以用于记录数据的变化历史,例如记录数据的修改时间、修改人等信息,方便数据的追溯和审计。
3)数据自动更新:通过触发器可以实现数据的自动更新,例如根据某个字段的变化自动更新其他相关字段的值。
4)业务规则的强制执行:触发器可以用于实现业务规则的强制执行,例如限制某个字段的取值范围、禁止某些操作等。
4、DML触发器类型:
1)AFTER 触发器:在执行 INSERT、UPDATE、DELETE 语句的操作之后执行 AFTER 触发器。 如果违反了约束,则永远不会执行 AFTER 触发器;因此,这些触发器不能用于任何可能防止违反约束的处理;
2)INSTEAD OF 触发器:在执行 INSERT、UPDATE、DELETE 语句的操作之前执行 INSTEAD OF 触发器,当符合预定条件时,则执行,否则回滚该事务。
5、INSERTED表 和 DELETED表:触发器有两张特殊的表,即INSERTED 和 DELETED。这两张表是逻辑表或虚表,由系统在内存中创建,不会存储在数据库中,且其是只读的。这两张表的结果总是与触发器应用的表的结构完全相同,当触发器完成后,这两张表就会被删除。INSERTED 表的数据是插入或修改后的数据,DELETED 表的数据是更新前或删除的数据。它们具体存储的数据与对应表数据操作如下:
表操作 |
INSERTED逻辑表 |
DELETE逻辑表 |
新增记录(INSERT) |
存放增加的记录 |
无 |
删除记录(DELETE) |
无 |
存放被删除的记录 |
修改记录(UPDATE) |
存放更新后记录 |
存放更新前的记录 |
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/76260.html