SQLServer 触发器(DML)

SQLServer 触发器(DML)

  1. 定义:与表事件相关的特殊的存储过程
  2. 调用方式:由事件来触发,当对一个表进行操作时就会激活对应触发器的执行(insert、update、delete)
  3. 作用:用于加强数据的完整性约束和业务规则等
  4. 注意:触发器不能执行 EXCUTE 语句的调用

触发器的分类:

 1. insert 写入数据时触发
 2. delete 删除数据时触发 
 3. update(delete+insert) 修改表数据时触发

触发器对应虚表介绍

 1. inserted 临时保存即将被插入的数据
 2. deleted 临时保存即将被删除的数据

触发器的工作原理

 1. INSERT 触发器
     1). 执行insert插入语句,在表中插入数据行
     2). 触发insert触发器,向inserted虚表中写入新行的备份数据
     3). 执行触发器内的流程,此处可做数据校验,允许插入,拒绝插入等操作
 2. DELETE 触发器
     1). 执行delete删除语句,删除表中数据行
     2). 触发delete触发器,向deleted虚表中写入即将被删除行的备份数据
     3). 执行触发器内的流程,此处可做数据保护,拒绝删除数据
 3. UPDATE 触发器
     1). 执行update更新语句,更新表中数据行
     2). 触发update触发器,向deleted虚表中写入即将被删除的数据,向inserted虚表中写入即将插入的新数据
     3). 执行触发器内的流程,此处可做数据校验,允许或拒绝更新操作

触发器的创建语法

 CREATE TRIGGER trigger_name -- 触发器名称
     ON table_name -- 表名
    [WITH ENCRYPTION] -- 加密触发器
    FOR | AFTER | INSTEAD OF [DELETE, INSERT, UPDATE] -- 触发器的类型
 AS 
      TRANSACTION-SQL语句

注:for 、 after 、 instead of 的区别

 1. for 和 after 作用类似 都属于数据表后触发器,此触发器一张表可以拥有多个,不支持从虚表中读取text、ntext、image字段的值,该触发器执行时会先执行实际操作(insert、update、delete)的Transaction语句再执行触发器内部定义的Transaction语句如针对同一操作有多个触发器则按照触发器定义顺序先后执行
 2. instead of 属于数据表前触发器,此触发器一张表可以拥有多个,支持从虚表中读取text、ntext、image字段的数据读取,该触发器被触发时只执行触发器内部定义的Transaction语句并不执行实际操作(insert、update、delete)的Transaction语句
  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值