SQLServer数据库——触发器

今天写有关数据库的程序,需要用到触发器,以前也写过但是却没有深究。今天准备整理一下。

      首先看触发器的定义。顾名思义触发就是当我们执行一种操作时引起其它操作的行为。我们通常所说的触发器是指DML触发器。DML 触发器嘛就是是当数据库服务器中发生数据操作语言 (DML) 事件时要执行的操作。DML 事件包括对表或视图发出的 UPDATE、INSERT 或 DELETE 语句。DML 触发器用于在数据被修改时强制执行业务规则,以及扩展 Microsoft SQL Server 约束、默认值和规则的完整性检查逻辑。

      像常规触发器一样,DDL 触发器将激发存储过程以响应事件。但与 DML 触发器不同的是,它们不会为响应针对表或视图的 UPDATE、INSERT 或 DELETE 语句而激发。相反,它们将为了响应各种数据定义语言 (DDL) 事件而激发。这些事件主要与以关键字 CREATE、ALTER 和 DROP 开头的 Transact-SQL 语句对应。执行 DDL 式操作的系统存储过程也可以激发 DDL 触发器。

      DML触发器的类型。

  • after触发器:在执行了 INSERT、UPDATE 或 DELETE 语句操作之后执行 AFTER 触发器。指定 AFTER 与指定 FOR 相同,它是 Microsoft SQL Server 早期版本中唯一可用的选项。AFTER 触发器只能在表上指定。
  • instead of触发器:执行 INSTEAD OF 触发器代替通常的触发动作。还可为带有一个或多个基表的视图定义 INSTEAD OF 触发器,而这些触发器能够扩展视图可支持的更新类型。
  • CLR 触发器可以是 AFTER 触发器或 INSTEAD OF 触发器。CLR 触发器还可以是 DDL 触发器。CLR 触发器将执行在托管代码(在 .NET Framework 中创建并在 SQL Server 中上载的程序集的成员)中编写的方法,而不用执行 Transact-SQL 存储过程。

函数 AFTER 触发器 INSTEAD OF 触发器

适用范围

表和视图

每个表或视图包含触发器的数量

每个触发操作(UPDATE、DELETE 和 INSERT)包含多个触发器

每个触发操作(UPDATE、DELETE 和 INSERT)包含一个触发器

级联引用

无任何限制条件

不允许在作为级联引用完整性约束目标的表上使用 INSTEAD OF UPDATE 和 DELETE 触发器。

执行

晚于:

  • 约束处理
  • 声明性引用操作
  • 创建插入的删除的
  • 触发操作

早于:

  • 约束处理

替代:

  • 触发操作

晚于:

  • 创建插入的删除的

执行顺序

可指定第一个和最后一个执行

不适用

插入的删除的表中的 varchar(max)nvarchar(max)varbinary(max) 列引用。

允许

允许

插入的删除的表中的 textntextimage 列引用。

不允许

允许

看下面的表:

 

函数 AFTER 触发器 INSTEAD OF 触发器

适用范围

表和视图

每个表或视图包含触发器的数量

每个触发操作(UPDATE、DELETE 和 INSERT)包含多个触发器

每个触发操作(UPDATE、DELETE 和 INSERT)包含一个触发器

级联引用

无任何限制条件

不允许在作为级联引用完整性约束目标的表上使用 INSTEAD OF UPDATE 和 DELETE 触发器。

执行

晚于:

  • 约束处理
  • 声明性引用操作
  • 创建插入的删除的
  • 触发操作

早于:

  • 约束处理

替代:

  • 触发操作

晚于:

  • 创建插入的删除的

执行顺序

可指定第一个和最后一个执行

不适用

插入的删除的表中的 varchar(max)nvarchar(max)varbinary(max) 列引用。

允许

允许

插入的删除的表中的 textntextimage 列引用。

不允许

允许

函数 AFTER 触发器 INSTEAD OF 触发器

适用范围

表和视图

每个表或视图包含触发器的数量

每个触发操作(UPDATE、DELETE 和 INSERT)包含多个触发器

每个触发操作(UPDATE、DELETE 和 INSERT)包含一个触发器

级联引用

无任何限制条件

不允许在作为级联引用完整性约束目标的表上使用 INSTEAD OF UPDATE 和 DELETE 触发器。

执行

晚于:

  • 约束处理
  • 声明性引用操作
  • 创建插入的删除的
  • 触发操作

早于:

  • 约束处理

替代:

  • 触发操作

晚于:

  • 创建插入的删除的

执行顺序

可指定第一个和最后一个执行

不适用

插入的删除的表中的 varchar(max)nvarchar(max)varbinary(max) 列引用。

允许

允许

插入的删除的表中的 textntextimage 列引用。

不允许

允许

今天先说这么多。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值