SQL Server 触发器

触发器定义

  • 触发器是一种特殊类型的存储过程,可以理解为对数据库的某个表进行操作时会自动执行的存储过程,触发器可以指定其被调用的条件,只要满足条件,触发器就会被调用

触发器条件

  • insert
  • update
  • delete

何时触发

  • instead of :在sql语句执行前触发
  • after: sql语句执行完成后再触发

特殊表

  • 触发器有两个特殊的表:插入表(inserted表)和删除表(deleted表)。这两张是逻辑表也是虚表。有系统在内存中创建者两张表,不会存储在数据库中。而且两张表的都是只读的,只能读取数据而不能修改数据。这两张表的结果总是与被改触发器应用的表的结构相同。当触发器完成工作后,这两张表就会被删除。Inserted表的数据是插入或是修改后的数据,而deleted表的数据是更新前的或是删除的数据

  • Update数据的时候就是先删除表记录,然后增加一条记录。这样在inserted和deleted表就都有update后的数据记录了。注意的是:触发器本身就是一个事务,所以在触发器里面可以对修改数据进行一些特殊的检查。如果不满足可以利用事务回滚,撤销操作

image

实例1:

  • 删除用户表中的用户后,(触发)删除其他库中的存放的密码表中的用户
use XXX
go
create trigger Tri_DeleteUser on User after delete
as
delete from XXX.dbo.UserAccount where guid = (select guid from deleted)

posted @ 2021-08-13 19:41  弩哥++  阅读(946)  评论(0编辑  收藏  举报