我是靠谱客的博主 自然日记本,最近开发中收集的这篇文章主要介绍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触发器(没有测试过其他的, 不乱说)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部