MSSQL触发器
1.触发器语法
CREATE TRIGGER<trigger name>
ON [<模式名>.]<表名或视图名>
[WITH ENCRYPTION]
{{{FOR|AFTER} <[DELETE] [,] [INSERT] [,] [UPDATE] >} | INSTED OF}
[WITH APPEND]
AS
<SQL语句>
2.DML触发器类型
参考:msdn
1)AFTER 触发器:在执行 INSERT、UPDATE、MERGE 或 DELETE 语句的操作之后执行 AFTER 触发器。 如果违反了约束,则永远不会执行 AFTER 触发器;
2)INSTEAD OF 触发器:插入、更新或删除行之前执行;
比较:
|
功能 |
AFTER触发器 |
INSTEAD OF触发器 |
|
适用范围 |
表 |
表和视图 |
|
每个表或视图包含触发器的数量 |
每个触发操作(UPDATE、DELETE 和 INSERT)包含多个触发器 |
每个触发操作(UPDATE、DELETE 和 INSERT)包含一个触发器 |
|
级联引用 |
无任何限制条件 |
不允许在作为级联引用完整性约束目标的表上使用 INSTEAD OF UPDATE 和 DELETE 触发器。 |
|
执行 |
晚于: 约束处理 声明性引用操作 创建插入的和删除的表 触发操作 |
早于: 约束处理 替代: 触发操作 晚于: 创建插入的和删除的表 |
|
执行顺序 |
可指定第一个和最后一个执行 |
不适用 |
|
插入的和删除的表中的varchar(max)、nvarchar(max) 和 varbinary(max)列引用。 |
允许 |
允许 |
|
插入的和删除的表中的 text、ntext 和 image 列引用。 |
不允许 |
允许 |
3.插入表(instered表)和删除表(deleted表)
|
对表的操作 |
Inserted逻辑表 |
Deleted逻辑表 |
|
增加记录(insert) |
存放增加的记录 |
无 |
|
删除记录(delete) |
无 |
存放被删除的记录 |
|
修改记录(update) |
存放更新后的记录 |
存放更新前的记录 |
4.IF UPDATE()与COLUMNS_UPDATED()
前一个用于判断是否更新了某列提供一个布尔判断;后一个提供以此检查多列能力。
5.禁用启用触发器
ALTER TABLE <table name> <ENABLE|DISABLE> TRIGGER <ALL|trigger name>
MSSQL触发器的更多相关文章
- MSSQL 触发器 暂停 和 启动
开启关闭触发器 禁用: ALTER TABLE member DISABLE TRIGGER trig1 GO 恢复: ALTER TABLE member ENABLE TRIGGER trig1 ...
- mssql触发器demo
USE [pos]GO/****** Object: Trigger [dbo].[tr_insert] Script Date: 06/26/2014 09:27:19 ******/SET ANS ...
- SQL Server 2008通过LinkServer操作ORACLE
时光荏苒~~ 最近项目有需求需要通过SQL Server2008中的数据自动更新到ORACLE中,其实,一开始肯定会想到触发器,因为可以保证实时性. 方案一: 首先,我很确定的一件事情就是MSSQL中 ...
- SQL Server 2008-LinkServer操作ORACLE
链接来源:https://www.cnblogs.com/wangyong/p/Oracle.html 最近项目有需求需要通过SQL Server2008中的数据自动更新到ORACLE中,其实,一开始 ...
- mssql instead of 触发器应用一-创建只读视图(view)的方法
转自: http://www.maomao365.com/?p=4906 <span style="color:white;background-color:blue;font-wei ...
- MSSQL 事务,视图,索引,存储过程,触发器
事务 事务是一种机制.是一种操作序列,它包含了一组数据库操作命令,这组命令要么全部执行,要么全部不执行. 在数据库系统上执行并发操作时事务是作为最小的控制单元来使用的.这特别适用于多用户同时操作的数据 ...
- 获取MSSQL Server中的相关信息(视图、存储过程、触发器、表)
在SQL SERVER得到某个数据库下面所有的表.视图.存储过程.触发器 select name from sysobjects where xtype='TR' --所有触发器select name ...
- MSSQL手札二 MSSQL的触发器
触发器,就是在对表做DML操作的时候,触发一些其他的事件,触发器一般用在check约束更加复杂的约束上面,是一种特殊的存储过程,不可以被主动调用. 语法如下: CREATE TRIGGER trigg ...
- mssql 创建触发器
MS-SMS里创建触发器: 首先右击表内的触发器文件夹图标 然后输入触发器创建指令,一下案例:(添加创建时间) 创建: SET ANSI_NULLS ON GO SET QUOTED_IDENTIFI ...
随机推荐
- DNS 取得授权
1.阿里云上cnroot.cn申请DNS解析服务器 也就是cnroot.cn下的子域名都从这个DNS上获取. 如www.cnroot.cn 如 handle.cnroot.cn 2.vi /home/ ...
- dr-helper项目设计介绍(一个包括移动端和Web端的点餐管理系统)
一.源代码路径 https://github.com/weiganyi/dr-helper 二.界面 通过浏览器訪问Web服务,能够看到界面例如以下: ADT-Bundle编译project生成dr- ...
- asp.net中UpdatePanel数据加载成功后回调
//添加UpdatePanel加载成功后执行的js方法 Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(onPageLoade ...
- 再议urlconnection和socket区别
利用URL进行通信与利用socket进行通信有许多相似之处.它们都是利用建立连接.获取流来进行通信.那么,它们的区别在何处呢? 利用socket进行通信时,在服务器端运行一个socket通信程序 ...
- docker pull net/http: TLS handshake timeout错误解决
docker pull net/http: TLS handshake timeout 出现这个错误,原因很明显,我们在围城里,有两种解决办法,一种是用梯子爬围墙,一种是用国内源,下面用国内源 e ...
- sprint3 【每日scrum】 TD助手站立会议第十天
站立会议 组员 昨天 今天 困难 签到 刘铸辉 (组长) 团队进入最终的功能测试阶段,准备发布Beta版 和团队发布Beta版,并开总结会议 总结会议 Y 刘静 团队集合软件测试 软件发布 没有 Y ...
- java中利用WeakHashMap实现缓存
简介 WeakHashMap是Java集合框架里的一员,从名字可以看出它是某种 Map.它的特殊之处在于 WeakHashMap 里的entry可能会被GC自动删除,即使程序员没有调用remove() ...
- 从头认识Spring-2.4 基于java的标准注解装配-@Inject-限定器@Named
这一章节我们来讨论一下基于java的标准注解装配标签@Inject的限定器@Named. 1.domain 蛋糕类: package com.raylee.my_new_spring.my_new_s ...
- VMware网络连接 桥接、NAt、host-only模式
如果你想利用VMWare安装虚拟机,或想创建一个与网内其他机器相隔离的虚拟系统,进行特殊的调试工作.此时,对虚拟系统网络连接模式的选择就非常重要了.如果你选择的工作模式不正确,就无法实现上述目的,也就 ...
- JQ中find()与filter()的区别
刚开始学的时候,对于find()和filter()有点理不清楚,下面通过案例相信就可以很快的区分清楚 以下是代码 find弹出的是 filter()弹出的是 下面我们添加div的class是rain ...