概述
SQLServer2008触发器的用到的临时表有2个 , 分别是 inserted 和 deleted 两个临时表, 批量删除(例如:delete from document where id > 5)和修改 (例如:update document set docstatus = 2 where id > 10) 都能被触发器捕捉到 , 而并不是网上说的不能捕获批量删除和修改(SQLServer2008触发器测试的, 其他的版本自己测试去))
/*记录文档修该表*/
CREATE TABLE updated_docs(
id int identity primary key ,
doc_id int , /*更新ID*/
update_time datetime /*更新时间*/
) ;
/*文档表*/
CREATE TABLE document(
id int identity primary key ,
title varchar(100) not null ,
create_time datetime /*更新时间*/
) ;
/*插入触发器*/
CREATE TRIGGER trigger_doc_insert
ON document /*表名*/
FOR INSERT /*操作*/
AS
insert into updated_docs (doc_id , update_time)
select id , getdate() from inserted ;
/*修改触发器*/
CREATE TRIGGER trigger_doc_update
ON document /*表名*/
FOR UPDATE /*操作*/
AS
insert into updated_docs (doc_id , update_time)
select id , getdate() from inserted ;
/*删除触发器*/
CREATE TRIGGER trigger_doc_delete
ON document /*表名*/
FOR DELETE /*操作*/
AS
insert into updated_docs (doc_id , update_time)
select id , getdate() from deleted ;
注:数据更新的操作涉及到了临时表的建立:里面的两个临时的表:deleted,inserted。注意deleted与inserted分别表示触发事件的表“旧的一条记录”和“新理解触发器的一条记录” , 要操作的表的字段在inserted表和deleted表里都能找到。
一个数据库系统中有两个虚拟表用于存储在表中记录改动的信息,分别是:
操作 | 虚拟表inserted | 虚拟表deleted |
在表记录新增时 | 存放新增的记录 | 不存储记录 |
修改时 | 存放用来更新的新纪录 | 存放更新前的记录 |
删除时 | 不存储记录 | 存放被删除的记录 |
最后
以上就是自然日记本为你收集整理的SQLServer2008触发器(没有测试过其他的, 不乱说)的全部内容,希望文章能够帮你解决SQLServer2008触发器(没有测试过其他的, 不乱说)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复