欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

怎样在触发器中区分update,insert,delete动作?解决方案

更新时间: 2014-01-05 02:21:43 责任编辑: Author_N1

 

怎样在触发器中区分Update,insert,delete动作?
由于update是一个delete和insert的组合,不知道怎么才能区分
哪位高手能给个答案啊?
create   trigger   tr_test_insert   on   test  
for   insert,delete,update
as
    declare          
    @rows       int      
    select       @rows=@@rowcount           ---把@@rowcount记录下来,防止变化      
    if       @@rowcount <1       return           ---没有修改      
    if       update(f1)                                           --修改了第一个字段a1,你也可以判断其他的条件      
    begin  
if       exists(select       *       from       deleted)       and       @rows> =1  
begin         --修改以前的值      
insert   into   test1   select   f1,   user_name(),   host_name(),   'old   value ',   getdate()   from   inserted    
    if       exists(select       *       from       inserted)       and       @rows> 1           --修改以后的值      
    select   @rows
insert   into   test1   select   f1,   user_name(),   host_name(),   'new   value ',   getdate()   from   inserted
end
if   exists(select       *       from       inserted)   and   @rows   =0
begin
select   @rows
insert   into   test1   select   f1,   user_name(),   host_name(),   'insert ',   getdate()   from   inserted   i
end  

if   exists(select       *       from       deleted)   and   @rows   =0
begin
select   @rows
insert   into   test1   select   f1,   user_name(),   host_name(),   'delete ',   getdate()   from   deleted
end  
/*

insert   into   test1   select   f1,   user_name(),   host_name(),   'old   value ',   getdate()   from   deleted  
insert   into   test1   select   f1,   user_name(),   host_name(),   'new   value ',   getdate()   from   inserted  
*/
end


实在弄不清该怎么判断条件了,各位兄弟姐妹给解围啊!

--参考方法--
同时查看inserted/deleted表,如果inserted和deleted中同时有数据,则为update操作,否则,分别为insert和delete操作。
--参考方法--
跟你的触发器是设置类型有关,跟你的操作没什么关系吧!就好像你在update上面定义insert和delete操作也可以一样!但是,如果你的insert,delete操作也是这个表上面,同样会触发delete等操作!
--参考方法--
把触发器分开写就什么都实现了嘛。
--参考方法--
分开写!就着样
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:21:43
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/8898/
本文WWW.DOC100.NET DOC100.NET版权所有。