建立触发器问题 然后在建立触发器的表里操作。

WEL04 2009-11-11 07:55:13
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 自己就会变了。
请教。
...全文
97 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
renadg 2009-11-11
  • 打赏
  • 举报
回复
????
ChinaJiaBing 2009-11-11
  • 打赏
  • 举报
回复

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

WEL04 2009-11-11
  • 打赏
  • 举报
回复
触发器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
WEL04 2009-11-11
  • 打赏
  • 举报
回复
很奇怪 一下UPDATE 出来的错误的值,下子是正确的
SQL77 2009-11-11
  • 打赏
  • 举报
回复
我只更新了 DoAccountReceivableAmount 值,
我想把原表里的AccountReceivableAmount 减去 更新了的DoAccountReceivableAmount 值,去更新原表里的UnAccountReceivable值,
原表你不是用相减吗,你最后直接用减一次就行了
WEL04 2009-11-11
  • 打赏
  • 举报
回复
InvoiceNO 不会被改变

我是想更新原表。
SQL77 2009-11-11
  • 打赏
  • 举报
回复
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
WEL04 2009-11-11
  • 打赏
  • 举报
回复
我只更新了 DoAccountReceivableAmount 值,
我想把原表里的AccountReceivableAmount 减去 更新了的DoAccountReceivableAmount 值,去更新原表里的UnAccountReceivable值,

现在是我只UPDATE AccountReceivableAmount , 但是最后 AccountReceivableAmount 也变了?
这是为什么?

我只更新 AccountReceivableAmount ,不更新AccountReceivableAmount 值, 结果又是好的。
SQL77 2009-11-11
  • 打赏
  • 举报
回复
create trigger ARMtrigger 
on AccountReceivableMaster
after update
as
update AccountReceivableMaster
set UnAccountReceivable=
isnull(AccountReceivableAmount,0)-isnLL(DoAccountReceivableAmount,0) from inserted


你就这样吧
SQL77 2009-11-11
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 wel04 的回复:]
还是一样啊

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

你确定你的InvoiceNO 不会被改变
WEL04 2009-11-11
  • 打赏
  • 举报
回复
还是一样啊
ChinaJiaBing 2009-11-11
  • 打赏
  • 举报
回复
 
--试试
create trigger 名称 on 表
for insert,update
as
begin
...end
WEL04 2009-11-11
  • 打赏
  • 举报
回复
create trigger ARMtrigger
on tableA
after update
as
update tableA
set lineB=lineA+lineC
from inserted,tableA
where inserted.InvoiceNO=tableA.InvoiceNO


这样的触发器 是个死循环 ?出不来的吗?
SQL77 2009-11-11
  • 打赏
  • 举报
回复
没看明白什么意思
bancxc 2009-11-11
  • 打赏
  • 举报
回复
死循环???

34,594

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧