A,B表没有关系?看得不太明白"不希望操作A表时(增加,删除)时做其它不必要的工作"
这是什么意思?

解决方案 »

  1.   

    可以不用建C表来写触发器,具体思路就是判断删除列feild1 在A表里是否有一条以上记录不过用程序来实现不是更好!?
      

  2.   

    不需要用C,B表加一个触发器create trigger trInsert on B for delete as if exists( select 1 from A, deleted where A.field1 = deleted.field1 )
    begin
    rollback tran
    raiserror( '此记录不能删除', 16, 1 )
    ebd
      

  3.   

    --如果A/B通过 FIELD1 关联
    --删除B表记录时,如果 FIELD1 在A表已经存在,则不允许删除,则写如下触发器
    create trigger tr_delete_b on B
    for delete
    as
    if exists(select * from deleted d where exists(select * from A where FIELD1=d.FIELD1 ))
    begin 
       raiserror('要删除的 FIELD1 已经在A表中使用,不能删除,本次删除取消!',16,1)
       rollback tran
    end
      

  4.   

    --看反了,如果是多个表引用,只需要为每个引用的表编写类似B表的检查触发器就行了.不过,楼主的表述是否有问题呢?A表是主表,B表是代码表,删除B表(代码表)中的记录时,要检查A表(主表)中的记录是否存在??似乎写反了吧?