SqlServer之触发器

1.触发器之理论:

触发器(Trigger)是一种特殊类型的存储过程,是在用户对某一种表的数据进行
UPDATE、INSERT 和 DELETE 操作时被触发执行的一段程序。触发器有助于强制引用完
整性,以便在添加、更新或删除表中的行时保留表之间已定义的关系。

2.触发器工作原理:

① 触发器的名称。
② 触发器中进行的操作。
③ 触发器操作的执行过程。

3.创建触发器:

可以通过 CREATE TRIGGER 语句建立触发器,其语法格式为:

CREATE TRIGGER trigger_name 
ON { table | view } 
[ WITH ENCRYPTION ]

{{ { FOR | AFTER | INSTEAD OF } { [ INSERT ] [ , ] [ UPDATE ] } 
[ WITH APPEND ][ NOT FOR REPLICATION ] 
AS{batch| IF UPDATE ( column ) [ { AND | OR } UPDATE ( column ) ]}

参数说明如下:

① trigger_name:触发器的名称。触发器名称必须符合标识符规则,并且在数据库中
必须唯一,可以选择是否指定触发器所有者名称。
② table | view:在其上执行触发器的表或视图,有时称为触发器表或触发器视图。
③ WITH ENCRYPTION:加密 syscomments 表中包含 CREATE TRIGGER 语句文本的
条目。
④ AFTER:指定触发器只有在触发 SQL 语句中指定的所有操作都已成功执行后才激
发。如果仅指定 FOR 关键字,则 AFTER 是默认设置。不能在视图上定义 AFTER 触发器。
⑤ INSTEAD OF:指定执行触发器而不是执行触发 SQL 语句,从而替代触发语句的
操作。在表或视图上,都可以定义一个 INSTEAD OF 触发器,但不能在 WITH CHECK
OPTION 的可更新视图上定义。
⑥ { [DELETE] [,] [INSERT] [,] [UPDATE] }:指定在表或视图上执行哪些语句时将激
活触发器的关键字,必须至少指定一个选项。在触发器定义中允许使用以任意顺序组合的
这些关键字。如果指定的选项多于一个,需用逗号分隔这些选项。
⑦ WITH APPEND:指定应该添加现有类型的其他触发器。只有当兼容级别是 65 或
更低时,才需要使用该可选子句。WITH APPEND 不能与 INSTEAD OF 触发器一起使用;
或者显式声明 AFTER 触发器,也不能使用该子句。
⑧ NOT FOR REPLICATION:当复制进程更改触发器所涉及的表时,不应执行该触
发器。
⑨ AS:触发器要执行的操作。

4.触发器实例:

Create Table Student(
          StudentNO int primary key,  --学号
            )

        Create Table COURSE(
           CourseNO int primary key,  --课程号
           StudnetID int,
            )

        使用触发器,更改学生学号,同步更改学生选课的课程号,
        Create Trigger tri_updateStudent
        On Student                       --在Studnet中创建触发器
        for Update                       --触发事件
        AS                               --事件触发后执行的事情
        if Update(SudentID)
        begin
        Update COURSE
        Set StudentID=i.StudentID
        From COURSE cr,Deleted d,Insert i    --Deleted和Inserted临时表 
        Where cr.StudentID=d.StudentID

 

 

扩展阅读:

SQL触发器实例讲解:http://www.cnblogs.com/xianqingzh/archive/2009/04/30/1447143.html

DML触发器:http://msdn.microsoft.com/zh-cn/library/ms178110.aspx

tips:

触发器是一种特殊的存储过程,区别:
.存储过程由EXECUTE命令直接调用执行;触发器通过数据库时间触发执行。
.存储过程主要用于是吸纳复杂的编程逻辑;触发器主要用于扩展数据的完整性。

.数据的完整性:数据的一致性和数据的正确性.

 

转载于:https://www.cnblogs.com/code-charmer/p/4068846.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值