我是靠谱客的博主 自然日记本,这篇文章主要介绍SQLServer2008触发器(没有测试过其他的, 不乱说),现在分享给大家,希望可以做个参考。

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触发器(没有测试过其他的,内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(144)

评论列表共有 0 条评论

立即
投稿
返回
顶部