MSSQL触发器
2014-03-08 15:16
169 查看
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 触发器:插入、更新或删除行之前执行;
比较:
3.插入表(instered表)和删除表(deleted表)
4.IF UPDATE()与COLUMNS_UPDATED()
前一个用于判断是否更新了某列提供一个布尔判断;后一个提供以此检查多列能力。
5.禁用启用触发器
ALTER TABLE <table name> <ENABLE|DISABLE> TRIGGER <ALL|trigger name>
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 列引用。 | 不允许 | 允许 |
对表的操作 | Inserted逻辑表 | Deleted逻辑表 |
增加记录(insert) | 存放增加的记录 | 无 |
删除记录(delete) | 无 | 存放被删除的记录 |
修改记录(update) | 存放更新后的记录 | 存放更新前的记录 |
前一个用于判断是否更新了某列提供一个布尔判断;后一个提供以此检查多列能力。
5.禁用启用触发器
ALTER TABLE <table name> <ENABLE|DISABLE> TRIGGER <ALL|trigger name>
相关文章推荐
- Mssql触发器学习例子之INSERT触发器
- MSSQL:查看所有触发器信息的命令
- MSSQL:触发器
- (MSSQL)在数据表中设置标志开关,进行触发器的有选择工作
- [MSSQL]禁用触发器
- 触发器-MSSQL常用操作
- MSSQL之十 触发器和事务
- MSSQL触发器处理多行数据
- [MSSQL]开发之 使用触发器自动编号
- sql生成(mssql对于表的delete和update做备份的触发器)代码的存储过程
- MSSQL之十 触发器和事务
- MSSQL之十七 触发器使用项目案例
- MSSQL通过触发器让数据库某个字段的值不为负数。
- MSSQL之十 触发器和事务
- MSSQL之十七 触发器使用项目案例
- MSSQL 触发器
- 查询 MSSQL 2000里面的全部的表的触发器
- 如何控制MSSQL触发器递归
- [MSSQL]触发器
- MSsql 增删改某个表时,用触发器调用DLL通知外部窗体程序