HELP!这样的触发器该怎么写?

sindia 2005-05-14 10:29:43
表BASEDOC其中有四个字段
应收amount,已收hasblan,应付payamount,可付canarg
当字段:应收amount,已收hasblan,应付payamount任一字段发生改变时都重新计算:可付canarg
触发器写法如下,可canarg都成0了:

CREATE TRIGGER upd_basedoc ON basedoc
for UPDATE
AS
if update(hasblan) or update(payamount) or update(amount)
begin

declare @ivcno char(11)
declare @hasblan numeric(18,3)
declare @payamount numeric(18,3)
declare @amount numeric(18,3)
select @ivcno=invoiceno,@hasblan =hasblan,@payamount=payamount,@amount=amount from inserted
update basedoc set canarg=
case isnull(@payamount,0)
when 0 then 8.625*isnull(@hasblan,0)
else
case isnull(@amount,0)
when 0 then 0
else @payamount*@hasblan/@amount
end
end
where invoiceno=@ivcno
end
该如何修改呢?
...全文
169 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangdehao 2005-06-22
  • 打赏
  • 举报
回复
恭喜了,一开始那个 如果批量的时候你把值赋给了一个变量,所以只能更新一个了
sindia 2005-06-22
  • 打赏
  • 举报
回复
CREATE TRIGGER upd_basedoc ON basedoc
after UPDATE
AS
if update(hasblan) or update(payamount) or update(amount)
begin
update basedoc set canarg=
case isnull(b.payamount,0)
when 0 then 8.625*isnull(b.hasblan,0)
else
case isnull(b.amount,0)
when 0 then 0
else b.payamount*b.hasblan/b.amount
end
end
from basedoc a,inserted b
where a.invoiceno=b.invoiceno
end
chichunhua 2005-05-19
  • 打赏
  • 举报
回复
你是如何搞定的說出來大家學習學習
sindia 2005-05-16
  • 打赏
  • 举报
回复
呵呵!我自己已经搞定啦,哈哈哈哈
sindia 2005-05-16
  • 打赏
  • 举报
回复
执行批量变更时,怎么只修改一条记录?
sindia 2005-05-16
  • 打赏
  • 举报
回复
怎么执行起来有时候可以,有时候不可以的感觉,像这种同张表的不同字段的计算依赖关系该,标准做法该怎么做???

34,575

社区成员

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

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