数据库-DML触发器

  Microsoft Sql Server 2008系统中提供了两种强制业务逻辑和数据完整性的机制,即约束技术和触发器技术。

触发器的概念及类型 

一般地认为,触发器是一种特殊的存储过程,它包含大量的Transact-SQL语句。但是存储过程与触发器还是有一些不同,存储过程可以由用户直接调用执行,而触发器不能被直接调用,只能自动执行。

按照触发事件的不同,可以把触发器分为两种,即DML触发器和DDL触发器。

DML触发器类型

1.按照触发事件的类型,可以把Microsoft SQL Server 2008提供的DML触发器分为三种类型:分别是INSERT类型、UPDATE类型、DELETE类型,这些也是DML触发器的基本类型,顾名思义,INSERT类型,就是往表中插入数据时,触发的触发器。而另为两种,同理。

2.按照触发器和触发事件的操作时间划分,可以把DML触发器分为ALTER触发器和INSTEAD OF触发器。当INSERT,UPDATE,DELETE语句执行之后才执行DML触发器的操作时,这时的触发器类型是ALTER触发器。ALTER触发器只能用于在表上的定义。如果想使用触发器操作代替触发事件的操作,可以使用INSTEAD OF类型的触发器。也就是说,INSTEAD OF类型的触发器可以代替INSERT、UPDATE、DELETE触发事件的操作。INSTEAD OF触发器可以建立在表上也可以建立在视图上。通过在视图上建立触发器,可以大大增强通过视图修改表中数据的功能。

DML触发器的使用

DMl触发器主要的作用是维护行级数据的完整性,而不是返回结果。只所以使用触发器,是因为触发器中可以包含非常复杂的过程逻辑。DML触发器可以实现比约束强制更加复杂的数据完整性。

DML可以一连串的更新数据库中相关表的数据。比如,在school数据库中,teacher表上有一个DELETE类型的触发器,该触发器可以删除其他表中与该表中被删除记录teacher_id相匹配的记录。在触发器中,通过使用teacher_id,在其他的表中定位匹配的行为来执行级联删除操作。

确保复杂的数据参考完整性地方法:

1.     执行操作或级联操作,参考完整性可以在CREATE TABLE语句中,通过使用外键约束定义。当级联删除或必须进行修改时,触发器确保相应操作。

2.     创建多行触发器,当插入、删除、修改多个记录行时,必须使用能过处理多行记录的触发器

3.     自定义错误提示信息。

4.     比较修改前后数据的状态,通过insert、update和delete语句,触发器可以提高参考数据的变化情况。

5.     约束优于触发器检查,如果触发器表上有约束,这些约束是在触发器执行之前检查的,如果触发器操作与约束有冲突,则不执行触发器

6.     表可以有应用于任意操作的多个触发器

7.     表的所有者必须要有执行全部触发器定义中语句的许可。

8.     触发器不应该返回结果集

创建触发器

触发器是一种特殊的存储过程,所以DML触发器的创建存储过程的创建方式很相似。

创建DML触发器的CREATE TRIGGER语句的基本语法形式如下:

CREATE TRIGGERtrigger_name

ON table_name_or_view_name

With ENCRYPTION

{ FOR|AFTER|INSTEAD OF}

{

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值