SQL Server触发器的使用

2,124次阅读
没有评论

触发器(trigger)是 SQL server 提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,当对一个表进行操作(insert,delete,update)时就会激活它执行。触发器经常用于加强数据的完整性约束和业务规则等。触发器可以从 DBA_TRIGGERS,USER_TRIGGERS 数据字典中查到。

[infobox title=” 触发器优点 ”]

 1. 触发器是自动的。当对表中的数据做了任何修改之后立即被激活。

 2. 触发器可以通过数据库中的相关表进行层迭修改。

 3. 触发器可以强制限制。这些限制比用 CHECK 约束所定义的更复杂。与 CHECK 约束不同的是,触发器可以引用其他表中的列。

[/infobox]

[warningbox title=”DML 触发器 ”]

DML 触发器是一些附加在特定表或视图上的操作代码,当数据库服务器中发生数据操作语言事件时执行这些操作。SqlServer 中的 DML 触发器有三种:

  1. insert 触发器: 向表中插入数据时被触发;
  2. delete 触发器:从表中删除数据时被触发;
  3. update 触发器:修改表中数据时被触发。

[/warningbox]

[dangerbox title=” 工作原理 ”]

触发器触发时:

  1. 系统自动在内存中创建 deleted 表或 inserted 表;
  2. 只读,不允许修改,触发器执行完成后,自动删除。

inserted 表:

  1. 临时保存了插入或更新后的记录行;
  2. 可以从 inserted 表中检查插入的数据是否满足业务需求;
  3. 如果不满足,则向用户发送报告错误消息,并回滚插入操作。

deleted 表:

  1. 临时保存了删除或更新前的记录行;
  2. 可以从 deleted 表中检查被删除的数据是否满足业务需求;
  3. 如果不满足,则向用户报告错误消息,并回滚插入操作。

[/dangerbox]

触发行为 / 临时表 inserted 表 deleted 表
插入 insert 存放新增的记录
修改 update 修改后的记录 修改前的记录
删除 delete 被删除的记录

基本语法

CREATE TRIGGER trigger_name -- 触发器名称
 ON table_name -- 触发器所在的表名
 [WITH ENCRYPTION]  -- 表示加密触发器定义的 sql 文本
  FOR | AFTER | INSTEAD OF [DELETE, INSERT, UPDATE]  -- 触发触发器的操作
 AS 
  T-SQL 语句 
GO

原文地址 这里

正文完
 0
Rioad
版权声明:本站原创文章,由 Rioad 于2019-08-16发表,共计1023字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)
验证码