A表是主键表/B表示外键表的话,要用instead of触发器,先删除从表B的数据,再删主表A的数据。

解决方案 »

  1.   

    create trigger tr_tb_d on tb for delete
    as
    delete tb1 from tb1,deleted where tb1.keycol = deleted.keycol
      

  2.   

    有外健關系時用級聯刪除
    create table T(ID int unique)create table T22 (ID int references T(ID) on delete cascade)
    create table T33 (ID int references T(ID) on delete cascade)
      

  3.   

    可能我没说明白,我用.net程序做了删除表数据功能,同时删除两张表,运行一直正常,现在在第一张表里加了触发器,结果删除的时候提示失败,第一张表的数据被删除了,却不能删除第二张表数据
      

  4.   


    不要用触发器,直接用sql语句删除
      

  5.   


    触发器里没有写删除第二张,
    没有用事务,
    先删除第一张,成功了
    再删除第二张,不成功
    想知道为什么,不会是sqlserver的原因吧
      

  6.   


    在程序里用事物控制,可以保证数据的一致性
    如果where条件是主键,就不用判断第一次删除是否返回1了.
      

  7.   

    写日志的时候 set nocount off
    完了再 set nocount on
      

  8.   

    所以我从来不用触发器
    原因:
    因为它隐藏业务逻辑,不易被程序员发现
    因为触发器不容易处理数据
    因为多个人写触发器,有时写成死while
    因为一个系统有几k个触发器的话,太难维护
    ....个人意见,不代表正确性...