浅谈SQL Server 数据库之触发器
2010-02-26 00:00:00 来源:WEB开发网核心提示: > 与 CHECK 约束不同(check约束只能引用自身表中的列),DML触发器可以引用其他表中的列;> 触发器可以完成所有约束的功能,浅谈SQL Server 数据库之触发器(2),但不一定是最佳方案;> 触发器能够使用自定义信息和较为复杂的错误处理;c、DML 触发器可以评
> 与 CHECK 约束不同(check约束只能引用自身表中的列),DML触发器可以引用其他表中的列;
> 触发器可以完成所有约束的功能,但不一定是最佳方案;
> 触发器能够使用自定义信息和较为复杂的错误处理;
c、DML 触发器可以评估数据修改前后表的状态,并根据该差异采取措施。
d、一个表中的同一个修改语句的DML触发器,允许被多个不同的操作(INSERT、UPDATE 或 DELETE)来响应;
触发器的类型:
insert 触发器;(略)
delete 触发器;(略)
update 触发器:在修改表中记录行或某列数据时触发执行;
注意:update(列)函数:实现检测某列是否被修改。
update 更新操作分为两步:
首先,“删除”更改前原有数据行:删除的原有数据行将复制到deleted临时表中;
然后,“插入”更改后的新数据行:插入新数据行到原始表,同时将新数据行保存到inserted临时表和触发器表中;
创建触发器的注意点:
1、create trigger必须是批处理(go)的第一条语句;
2、一个触发器语句只能用到一个表或一个视图中;
on 表名/ 视图名
3、一个触发器语句可以执行多个操作;
for delete,insert,update -- 无先后顺序的任意组合
4、建议DML触发器不返回任何结果。这是因为对这些返回结果的特殊处理必须写入每个允许对触发器表进行修改的应用程序中。
若要防止从 DML 触发器返回任何结果,请不要在触发器定义中包含select语句或变量赋值;
如果必须在触发器中进行变量赋值,则应该在触发器被触发之前使用set nocount on语句以避免返回任何结果集;
注意:未来版本的SQL Server 中,将会删除从触发器返回结果集的功能。
- ››sql server自动生成批量执行SQL脚本的批处理
- ››sql server 2008亿万数据性能优化
- ››SQL Server 2008清空数据库日志方法
- ››sqlserver安装和简单的使用
- ››SQL Sever 2008 R2 数据库管理
- ››SQL SERVER无法安装成功,sqlstp.log文件提示[未发...
- ››Sql Server中通过父记录查找出所有关联的子记录
- ››SqlServer触发器、存储过程和函数
- ››SQL Server 中的事务(含义,属性,管理)
- ››Sqlite数据库插入和读取图片数据
- ››Sql server 2005拒绝了对对象 'xx表' (数...
- ››Sql server 2005拒绝了对对象 'xx表' (数...
更多精彩
赞助商链接