create trigger ARMtrigger
on AccountReceivableMaster
after update
as
update AccountReceivableMaster
set UnAccountReceivable=isnull(AccountReceivableMaster.AccountReceivableAmount,0)-isnull(AccountReceivableMaster.DoAccountReceivableAmount,0)
from inserted,AccountReceivableMaster
where inserted.InvoiceNO=AccountReceivableMaster.InvoiceNO-----------为什么 这个UnAccountReceivable 老是不正确, 并且 只更新了DoAccountReceivableAmount 值 ,AccountReceivableAmount 自己就会变了。 
请教。

解决方案 »

  1.   

    create trigger ARMtrigger 
    on tableA
    after update 
    as 
    update tableA
    set lineB=lineA+lineC
    from inserted,tableA
    where  inserted.InvoiceNO=tableA.InvoiceNO 
    这样的触发器 是个死循环 ?出不来的吗?
      

  2.   

     
    --试试
    create trigger 名称 on 表
    for insert,update
    as
    begin
    ...end 
      

  3.   

    你说一下]
    并且 只更新了DoAccountReceivableAmount 值 ,AccountReceivableAmount 自己就会变了。 
    你这个明明就是更新原表,当更改了一列后就将那两列相减得值,
    更改了一列,那一列当然也更新,你确定你的InvoiceNO 不会被改变
      

  4.   

    create trigger ARMtrigger 
    on AccountReceivableMaster 
    after update 
    as 
    update AccountReceivableMaster 
    set UnAccountReceivable=
    isnull(AccountReceivableAmount,0)-isnLL(DoAccountReceivableAmount,0) from inserted你就这样吧
      

  5.   

    我只更新了 DoAccountReceivableAmount 值,
    我想把原表里的AccountReceivableAmount 减去 更新了的DoAccountReceivableAmount 值,去更新原表里的UnAccountReceivable值,现在是我只UPDATE AccountReceivableAmount  , 但是最后 AccountReceivableAmount 也变了?
    这是为什么?我只更新 AccountReceivableAmount ,不更新AccountReceivableAmount   值, 结果又是好的。
      

  6.   

    create trigger ARMtrigger 
    on AccountReceivableMaster 
    after update 
    as 
    update AccountReceivableMaster 
    set UnAccountReceivable=
    isnull(AccountReceivableAmount,0)-isnULL(DoAccountReceivableAmount,0) from inserted  where inserted.InvoiceNO=AccountReceivableMaster.InvoiceNO
      

  7.   

    InvoiceNO 不会被改变 我是想更新原表。
      

  8.   

    我只更新了 DoAccountReceivableAmount 值, 
    我想把原表里的AccountReceivableAmount 减去 更新了的DoAccountReceivableAmount 值,去更新原表里的UnAccountReceivable值,
    原表你不是用相减吗,你最后直接用减一次就行了
      

  9.   

    很奇怪 一下UPDATE 出来的错误的值,下子是正确的
      

  10.   

    触发器1:
    create trigger Atrigger 
    on tableA
    for  update 
    AS
    begin
    update  tableB
     set line1=inserted.lineA
    end 
    触发器2:
    create trigger Btrigger 
    on tableB
    after update
    as 
    begin
    update tableB
     set line3=line2-line1
    where inserted.line4=tableB.line4 
    end lineA, line1,line2,line3,line4 都是Int现在UPDATE tableA  set lineA=100 
      

  11.   


    create trigger tri_g
    on 表 
    for update
    as 
    begin
    update 系统_操作员 set... from inserted a 
    end