我想针对一个表用触发器完成一些功能,这些功能有的是在insert和update的时候完成的,有的是在delete的时候完成的,我又不是很想在一个表上做很多(2到3个)触发器,我能不能做个触发器针同时对insert、update、delete的,至于是在这些操作的前面发生还是后面发生我不太关心,我能不能在触发器里进行条件判断,根据不同的动作进行不同的操作;目前我可以判断当update某个字段的时候进行某些操作,
if update(字段名)
begin
  print 'adsf'
end而我一下找不到insert和delete的条件,不知道那位试过????

解决方案 »

  1.   

    Inserted為空,Deleted不為空  --Delete
    Inserted不為空,Deleted為空  --Insert
    Inserted不為空,Deleted不為空  --Update
      

  2.   

    Create Trigger Trigger_IUD on 表
    for insert,update,delete
    as
    begin
       if not exists (select 1 from deleted)
       begin
           print '插入操作'
       end
      else  if NOT exists (select 1 from inserted)
      begin
         print '删除操作'
      end
             else
                  begin
                          '更新操作'
                  end
                  end
    end
      

  3.   

    --这样??if exists(select 1 from deleted)
    begin
    if exists(select 1 from inserted)
    print 'Update'
    else
    print 'Delete'
    end
    else
    print 'Insert'
      

  4.   

    ALTER TRIGGER [dbo].[Trigger_表_IUD] ON [dbo].[表]
    FOR UPDATE,INSERT,DELETE
    AS
    BEGIN
    SET NOCOUNT ON
    IF NOT EXISTS (SELECT * FROM DELETED) --插入
    BEGIN
                          ...............
    END
    ELSE IF NOT EXISTS (SELECT * FROM INSERTED)--删除
     BEGIN
    .......................
     END
      ELSE --更新
      BEGIN
    ....................
     END
    SET NOCOUNT OFFEND
      

  5.   

    我想说的是,当然可以把触发器写成同时针对insert、update、delete操作的,事实上在同时需要三个操作的触发器的时候,写在一起往往能提高效率
    但是,关键的问题是写触发器必须对触发器的运行机制和你自己需要触发器做的工作相当了解,综合考虑各种操作,这样写的触发器才有效率。不知为不知,不要攻击人
      

  6.   

    对不起,楼上的Haiwer(海阔天空)朋友误会了,我的本意是在触发器中使用SQL语句作判断触发了哪个触发器,会增加触发器运行时间,尤其大量更新时,希望楼主能慎重考虑一下.因为系统已经为我们内建了到底触发了哪个触发器的机制(自动调用触发器),如果我们再自行判断,肯定会有开销的.仅仅出于效率的考虑,才和楼主调侃了一句"糟蹋",以示可惜现成的资源之意,并无任何贬低和轻视之意.本来怕楼主误会,所以后面特别打了笑脸符号(^_^),以表示调侃.
    我本人来这个论坛刚刚一个月,得到了众多朋友的热心帮助,并且在参与回帖的过程中学到了很多新知识,深感帮助别人的荣尚和被别人帮助的感激之情,决不会出言不逊.在此真诚的楼主道歉,请楼主和楼上批评指正的朋友原谅.
      

  7.   

    呵呵!刚看到!hellowork() 兄弟不要太在意,我们在一起是共同学习,共同进步的,相信楼上几位大哥也不会在意的!毕竟大家在讨论技术嘛!:)))
      

  8.   

    zlp321002(龙卷风2006)的可以了