SqlServer 触发器使用整理(一)

一、什么是触发器

1.触发器是对表进行插入、更新、删除操作时自动执行的存储过程

2.触发器通常用于强制业务规则

3.触发器是一种高级约束,可以定义比check等约束更为复杂的约束

 可执行复杂的sql语句(if/while/case)

 可引用其它表中的列

4.触发器定义在特定的表上,与表相关

5.自动触发执行,不能直接调用

6.是一个事务(可回滚,不能手动提交)

 

二、触发器的类型

delete触发器 当删除表中记录时触发,自动执行触发器所定义的SQL语句

insert触发器 当向表中插入数据时触发,自动执行触发器所定义的SQL语句

update触发器 当更新表中某列、多列时触发,自动执行触发器所定义的SQL语句

 

三、 deletedinserted

触发器触发时

  1.系统自动在内存中创建deleted表或inserted

  2.只读,不允许修改;触发器执行完后,自动删除

inserted:用于存储 INSERT  UPDATE 语句所影响的行的副本。

1.在执行INSERT  UPDATE 语句时,新加行被同时添加到 inserted 表和触发器表中,所以inserted表临时保存了插入或更新后的记录行

2.可以从inserted中检查插入的数据是否满足业务需求,如果不满足,则向用户报告错误消息,并回滚插入操作

 3. 可以执行ROLLBACK TRANSACTION回滚撤销操作

 

deleted表:表用于存储 DELETE  UPDATE 语句所影响的行的副本

1.在执行 DELETE  UPDATE 语句时,行从触发器表中删除,并传输到 deleted 表中,所以deleted表临时保存了删除或更新前的记录行

2.可从deleted表中检查被删除的数据是否满足业务需求, 如果不满足,则向用户报告错误消息,并回滚插入操作

注意:更新(UPDATE)语句类似于在删除之后执行插入;首先旧行被复制到 deleted 表中,然后新行被复制到触发器表和 inserted 表中

 

四、如何创建触发器

1.创建触发器的语法

create trigger trigger_name

on table_name

for [delete|insert|update]

as

   t-sql语句

go

总结:

触发器是在对表进行插入、更新或删除操作时自动执行的存储过程,触发器通常用于强制业务规则

触发器还是一个特殊的事务单元,当出现错误时,可以执行ROLLBACK TRANSACTION回滚撤销操作

触发器一般都需要使用临时表:deleted表和inserted表,它们存放了被删除或插入的记录行副本

触发器类型:INSERT触发器、UPDATE触发器、DELETE触发器

 

更多:

SqlServer ErrorLog 简介和清空

sql server 无法覆盖文件 'xxxx' 数据库 'xxx' 正在使用该文件。

 SqlServer 游标(一)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章