• 全部
  • 基础类
  • 应用实例
  • 新技术前沿

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

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
不知怎么样解决,希各位能人援助。谢谢!
...全文
105 点赞 收藏 5
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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
回复
发帖
MS-SQL Server
创建于2007-09-28

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2006-04-19 08:19
社区公告
暂无公告