理解T-SQL: 触发器
触发器是一种响应特定事件的特殊类型的存储过程。有两种类型的触发器:数据定义语言(DDL)和数据操作语言(DML)触发器。
DDL能够响应某种方式(Create,ALter,Drop)修改数据库结构时激发; DML是附加在特定表和视图上的代码。程序不能显式调用触发器,触发器代码是某种事件产生后被自动执行。DDL是SQL Server2005新增的功能。
使用触发器能够满足数据库操作的一些高级功能,其中包括:能够强制引用的完整性,尤其是涉及到跨服务器,复杂数据关系时;能够创建审核跟踪,跟踪每一条记录实际修改历史;能够跨表、跨数据库进行Check约束等。
1. 创建触发器
创建触发器的语法如下所示:
CREATE TRIGGER <trigger name>
ON [<schema name>.]<table or view name>
[WITH ENCRYPTION | EXECUTE AS <CALLER | SELF | <user> >]
{ FOR | AFTER | INSTEAD OF } { [ INSERT ] [ , ] [ UPDATE ] [ , ] [ DELETE ] }
[WITH APPEND]
[NOT FOR REPLICATION]
AS
< <sql statements> | EXTERNAL NAME <assembly method specifier> >
ON:表示基于什么对象创建触发器。如果是AFTER触发器,则ON子句的对象必须是一个表,不能是视图。
WITH ENCRYPTION: 加密触发器代码
FOR|AFTER: 决定由什么类型的动作激发触发器,包括Delete、Insert、Update动作。FOR和AFTER表明了DML 触发器仅在触发 SQL 语句中指定的所有操作都已成功执行时才被激发。所有的引用级联操作和约束检查也必须在激发此触发器之前成功完成。
INSTEAD OF:这个功能可以用来对视图进行Delete、Insert、Update,动作的激发是在修改数据之前。FOR/AFTER与INSTEAD OF调用顺序关系如图所示:、
2. INSERT、DELETE、UPDATE触发器
对于任何标记FOR/AFTER INSERT的触发器,无论何时,只要向表中插入新行,就会执行触发器的代码,对于每一个插入的行,SQL Server会将行的内容存储到一个特殊的表中,表名称为INSERTED,在触发器的代码内可以访问这张表。
对于DELETE触发器,SQL Server维护一张DELETED表,在触发器的生命周期内存在。
对于UPDATE触发器,SQL Server没有UPDATED表,相反,它维护两张表,分别是DELETED与INSERTED表。SQL Server把每一行更新看作是,先删除现在记录,再插入一个全新的记录。
3.其它更高级的主题请参见《SQL Server 2005 高级程序设计》第13章。暂时略过不提。这里只试举几个例子:
转载于:https://www.cnblogs.com/30ErLi/archive/2010/09/17/1829277.html
理解T-SQL: 触发器相关推荐
- SQL触发器实例讲解1
SQL触发器实例1 定义: 何为触发器?在SQL Server里面也就是对某一个表的一定的操作,触发某种条件,从而执行的一段程序.触发器是一个特殊的存储过程. 常见的触发器有三种:分别应 ...
- SQL触发器实例讲解
定义: 何为触发器?在SQL Server里面也就是对某一个表的一定的操作,触发某种条件,从而执行的一段程序.触发器是一个特殊的存储过程. 常见的触发器有三种:分别应用于Insert , ...
- SQL触发器的使用及语法(转)
定义: 何为触发器?在SQL Server里面也就是对某一个表的一定的操作,触发某种条件,从而执行的一段程序.触发器是一个特殊的存储过程. 常见的触发器有三种:分别应用于Insert , Update ...
- SQL触发器实例讲解(本文是来自百度文库)
我想记录每个商品的点击量,然后按照点击量来牌名商品,想要提高效率,所以必须得用触发器,下面是本人在百度文库中的找到的学习资料,分享下给大家. 定义: 何为触发器?在SQL Server里面也就是对某一 ...
- SQL触发器实例讲解(转)
定义: 何为触发器?在SQL Server里面也就是对某一个表的一定的操作,触发某种条件,从而执行的一段程序.触发器是一个特殊的存储过程. 常见的触发器有三种:分别应用于Insert , ...
- 简单使用触发器(详细) SQL触发器的使用及语法定义:
何为触发器?在SQL Server里面也就是对某一个表的一定的操作,触发某种条件,从而执行的一段程序.触发器是一个特殊的存储过程. 常见的触发器有三种:分别应用于Insert , Update , D ...
- SQL触发器的使用及语法
原文发布时间为:2010-08-07 -- 来源于本人的百度文章 [由搬家工具导入] ===以下转qsfwy.javaeye.com/blog/424789 定义: 何为触发器?在SQL Server ...
- SQL触发器实例(下)
1 基本语法: 2 Create Trigger [TriggerName] 3 ON [TableName] 4 FOR [Insert][,Delete][,Update] 5 AS 6 --触发 ...
- sql 触发器未触发_学习SQL:SQL触发器
sql 触发器未触发 SQL Triggers are another powerful database object we have at our disposal. In previous ar ...
- sql 触发器嵌套条件_SQL Server中的嵌套触发器
sql 触发器嵌套条件 Nested Triggers in SQL Server are actions that automatically execute when a certain data ...
最新文章
- TSNE——目前最好的降维方法
- 《CUDA C编程权威指南》——3.4 避免分支分化
- spark的内存过小报错
- 什么是 SAP Commerce yForms
- 2021中国移动经济发展报告
- oracle 包和包体禁用,Oracle包和包体以及与非包体定义函数、过程的区别
- apache poi excel显示 base64 图片_java操作Excel一:POI
- uniapp--微信小程序--云开发生成短连接h5跳转小程序
- Linux磁盘空间说明
- 费德勒球拍_球拍编程指南(DrRacket)
- u盘中毒文件被隐藏恢复方法
- 怎么在火狐中调试html,如何利用火狐浏览器开发工具调试网页颜色搭配?
- 诸葛:分析师是如何写好数据研究报告的?
- Hi-Fi小经验(转)
- 图形化初始化达梦数据库
- 妮妮lisp_140种Python标准库、第三方库和外部工具都有!
- 清华大学计算机专业课参考书,清华大学计算机考研辅导班:专业考研参考书目...
- C语言中restrict关键字学习
- 2017年终总结——第一篇博客开端
- NVIDIA Jetson TX2 简单介绍
热门文章
- 用指针比较三个数大小_《测量力的大小》教案
- hash算法_hash一致性算法
- c 程序设计语言第1 3部分,《C程序设计语言(第2版新版)典藏版》 —1.3 for语句...
- 金蝶kis仓库管理系统演示_金蝶KIS专业版生产管理的系统亮点功能
- php删除二维数组的某一行某一列_php中怎么去除二维数组的某个字段?
- linux telnet mysql_Linux下安装telnet(傻瓜教程)
- Power Designer快速的创建出数据集
- python包之间引用_python 子包引用父包和其他子包
- 我的世界服务器怎么在计分板上面显示,我的世界计分板指令教程 计分板指令怎么使用...
- 生成awr报告时报ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小