当触发器遇到这种情况会出错?请各位帮忙解决!谢谢!

Angelnet 2006-04-19 08:19:36
create trigger tri_入库表_delete on 入库表
for delete
as
update 库存表 set 数量=数量-a.数量 from deleted a where 库存表.货物id=a.货物id

go

当入库表有两行明细,货物ID是一样的就会出错
例如
IC01 100
IC01 500
当我把第二项明细删除,正常应该减去500库存,实际中发现是减去的100
不知怎么样解决,希各位能人援助。谢谢!
...全文
146 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ihymk 2006-04-19
  • 打赏
  • 举报
回复
update 库存表 set 数量=数量-a.数量 from deleted,a where 库存表.货物id=a.货物id
xiaoku 2006-04-19
  • 打赏
  • 举报
回复
代码看起来没有错呃。
zjcxc 元老 2006-04-19
  • 打赏
  • 举报
回复
create trigger tri_入库表_delete on 入库表
for delete
as
update a set 数量=a.数量-b.数量
from 库存表 a,(
select 数量=sum(数量), 货物id from deleted
group by 货物id
)b where a.货物id=b.货物id
OracleRoob 2006-04-19
  • 打赏
  • 举报
回复
如果不需要按批次管理,可以先按货物id分组后,再减
若需要按批次管理,则需要用游标循环
zjcxc 元老 2006-04-19
  • 打赏
  • 举报
回复
create trigger tri_入库表_delete on 入库表
for delete
as
update 库存表 set 数量=数量-(select sum(数量) from deleted a where 库存表.货物id=a.货物id )

go

34,837

社区成员

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

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