用触发器会好做一些。
你也可以把对两个表的操作写在同一个事务里面来处理。这需要在程序里做新增/删除/修改操作时,用代码来实现。

解决方案 »

  1.   

    1,事物开始
    2,可先将表1中增加、修改、删除的记录存入临时表,临时表增加一个标志字段,存储所做得操作“增加”,“修改”,“删除”;
    3.很多记录操作完毕,在进行提交操作。
    4。提交:将临时表中的所有记录按照标志字段,对表1进行处理,并对表2相应的记录进行处理。
    5。全成功,则确认事物
    6。出错则回滚事物,恢复修改.
      

  2.   

    看来不用触发是有点麻烦,如果用触发怎样写
    我下面的语句有问题吗,好象不起作用
    SELECT @nCount = COUNT(*) FROM DELETED
    IF (@nInsRows > 0 AND @nCount = 0) --is insert
    update b set  b.dglsl=b.dglsl-i.dsl from dc_htdd b,inserted i
    where i.dhtbm=b.dhtbm and i.dcpbm=b.dhtbm
    IF (@nInsRows > 0 AND @nCount > 0)  -- is update
    update b set  b.dglsl=b.dglsl-(d.dsl-i.dsl)
    from htdd b,inserted i,deleted d
     where i.dhtbm =b.dhtbm and i.dhtbm=b.dcpbm and d.dhtbm=b.dhtbm  and d.dhtbm =b.dcpbm
    IF (@nInsRows = 0 AND @nCount > 0) --is insert
    update b set  b.dglsl=b.dglsl+d.dsl from htdd b,deleted d
    where d.dhtbm=b.dhtbm and d.dcpbm=b.dhtbm
    end