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命令直接调用执行;触发器通过数据库时间触发执行。
.存储过程主要用于是吸纳复杂的编程逻辑;触发器主要用于扩展数据的完整性。
.数据的完整性:数据的一致性和数据的正确性.
SqlServer之触发器的更多相关文章
- sqlserver数据库触发器调用外部exe
sqlserver数据库触发器调用外部exe,同事可以选择参入参数! sqlserver使用 master..xp_cmdshell 进行外部exe的执行. 使用master..xp_cmdshell ...
- SqlServer添加触发器死锁的原因
之前遇到过SqlServer添加触发器死锁的情况,纠结了很长时间 最近发现原来是因为我在建表的时候,把id设成主键后,系统默认了加一个聚集的索引 就是聚集索引把表锁住了
- 知方可补不足~sqlserver中触发器的使用
回到目录 触发器在过去的10年中,即存储过程和ado.net称霸江湖期间是那么的重要,而现在,trigger显得不是那么必要的,我们很少将复杂的业务写在SQL里,当然也会没有机会写到trigger里了 ...
- SQLServer之触发器简介
触发器定义 触发器是数据库服务器中发生事件时自动执行的一种特殊存储过程.SQLServer允许为任何特定语句创建多个触发器.它的执行不是由程序调用,也不是手工启动,而是由事件来触发,当对数据库进行操作 ...
- [转帖]SQLSERVER 使用触发器实现 禁用sa用户 在非本机登录
原贴地址: https://blog.csdn.net/reblue520/article/details/51580102 具体的方法为: 创建一个触发器 CREATE TRIGGER forbid ...
- 在SQLServer使用触发器实现数据完整性
1.实现数据完整性的手段 在sqlserver中,在服务器端实现数据完整性主要有两种手段:一种是在创建表时定义数据完整性,主要分为:实体完整性.域完整性.和级联参照完整性:实现的手段是创建主键约束.唯 ...
- sqlserver数据库触发器和存储过程案例学习
--创建表 create table zhuangzhan ( name ), code ) ); --往表添加一列 alter table zhuangzhan add descition in ...
- Sqlserver的触发器的简单使用
1,触发器有两种 (1)After触发器(之后触发) 触发器有个好处:就是你之前有过什么操作他会将你的操作的数据信息完整的保存下来,比如你删过什么信息,如果用触发器,那么删除后就会显示两行受影响,那么 ...
- sqlserver的触发器练习实例
触发器的概念:它是由事件驱动的,就像java中的监听,当某个事件发生了,就会做一些工作. 下面直接上干货,创建insert触发器.delete触发器.DDL触发器和如何查看触发器定义 1.创建三个表学 ...
随机推荐
- mysql中limit用法误区
之前一直用oracle,在分页的时候用rownumber,转换到mysql上之后,用limit做分页: 在做某个业务的时候,需要先将数据排序,再分页,在给limit上参数的时候沿用了oracle的ro ...
- 实用CSS3属性之 :target伪类实现Tab切换效果
CSS3 :target伪类用来改变页面中锚链接URL所指向的ID样式,例如你要改变描链接指向#tab的元素字体颜色为蓝色,哪么你可以这样写成#tab:target {color:blue} 浏览器支 ...
- ORACLE 热备begin backup / end backup
执行begin backup之后,oracle会把将要备份的数据文件都标记为hot-backup-in-progress,锁定所要备份的datafile header的scn,例如此时scn=100, ...
- JqueryUI-3
本文在于巩固基础 JqueryUI控件之滚动条 这次主要是看Jquery官网上的API文档来做的 <!DOCTYPE html> <html> <head lang=&q ...
- .NET程序性能优化基本要领
想了解更多关于新的编译器的信息,可以访问 .NET Compiler Platform ("Roslyn") 基本要领 在对.NET 进行性能调优以及开发具有良好响应性的应 ...
- table中超长字符串省略号表示两种方法
写在前面: 1.第一种从网上找到的解决方式添加table-layout:fixed 2.第二种添加div 3.字符串过长产生省略号的css语句为如下三种合用:overflow:hidden ...
- C++ 动态分配类对象
1.概念 在C++中,类的对象建立分为两种,一种是静态建立,如A a:另一种是动态建立,如A* ptr=new A:这两种方式是有区别的. 静态建立一个类对象,是由编译器为对象在栈空间中分配内存,是通 ...
- AutoCompleteTextView 和 TextWatcher 详解
TextWatcher 监测Edittext内容的变化------------------------------------------------------------------------- ...
- php安全编程—sql注入攻击
php安全编程--sql注入攻击 定义 SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,其主要原因 ...
- CSS自学笔记(12):CSS3文字特效
在CSS3中新增了多个文本属性,同样有了这些属性我们在进行问题特效处理时,就尽可能少的用到其他软件去制作特效文字了. 在以前使用CSS进行web开发的时候,必须使用计算机上安装好的字体,如果有些用户的 ...