日期:2014-05-17  浏览次数:20658 次

触发器之销售一件商品减少库存中该物品的数量
create trigger saleandupdate on Sale
for update,insert
as
declare @sFNO varchar(8),@insertedFNO varchar(8),@insertedNum int
select @insertedFNO=inserted.FNO,@insertedNum=inserted.SaleNum
from inserted
declare c2 cursor for select Store.FNO from Store
open c2
fetch next from c2 into @sFNO
while(@@FETCH_STATUS=0)
BEGIN
      if(@sFNO=@insertedFNO)
      begin
           update Store 
           set StoreNum=StoreNum-@insertedNum
           break
      end
     fetch next from c2 into @sFNO
END
 close c2
 deallocate c2

//这里FNO为商品号 Store表为库存表 Sale为销售表 
问题是:我在Sale表插入一条销售信息 ,它把库存里的所有商品数量都减了,为什么啊?

------解决方案--------------------
update Store 
set StoreNum=StoreNum-@insertedNum
WHERE sFNO = @sFNO

你更新数量的时候没有加条件呀,这根本没必要用触发器了,更没有必要在触发器里用游标了,放在一个存储过程里就好了。。。 
------解决方案--------------------
一般insert和update不会同一个触发器。

还有的,对库存操作最好不用触发器,会给后面的人很难检查
------解决方案--------------------
引用:
一般insert和update不会同一个触发器。

还有的,对库存操作最好不用触发器,会给后面的人很难检查

恩,库存操作