实现的目的是: 想让修改了原来的进仓数据后,马上对库存数据进行的修改create trigger tru_进仓
on 进仓
for update
as
begin
update 结存set 现有库存=现有库存+ inserted.入仓数-deleted.入仓数 from inserted,deleted where 结存.代码=inserted.物料代码
if @@rowcount=0
insert 结存(代码,名称规格色别,现有库存) select 物料代码,名称规格色别,入仓数from inserted
end
但我追踪了运行后结果发现:这个触发器,就跟插入的触发器一样,只能是将修改了数量加在原来的库存数上面了,这就严重不对了。
要怎么修改才能实现修改后,能自动修改成正确的数量??。 2、另外,上面的语句能SQL2000中能正常运行(只是结果不对。) 但在SQL 2005中运行、保存都能通过,但再对 “进仓”表进行修改任何列的数据都会报错 提示:已更新或删除的行要么不能使该行成为唯一行,要么改变了多个行(2行), 这是为什么??
这句改成:(建议)
update 结存set 现有库存=现有库存+ inserted.入仓数-deleted.入仓数 from inserted,deleted where 结存.代码=inserted.物料代码 and inserted.物料代码=deleted.物料代码
as
begin
if exists (select 1 from 结存 where 代码 = (select 物料代码 from inserted))
update 结存 set 现有库存 = 现有库存 + inserted.入仓数 from 结存 , inserted where 结存.代码 = inserted.物料代码
else
insert 结存(代码,名称规格色别,现有库存) select 物料代码,名称规格色别,入仓数 from inserted
end