我修改为下列正确的,保存和执行触发器都可以
但就是不能“进仓”表中修改任何列的数据。(结存表是仓库库存的结存表)报错误提示:不能修改表的数据提示已更新或删除的行要么不能使该行成为唯一行,要么改变了多个行(860行),
这是为什么/??  是不是下面两个触发器的代码有什么冲突??要怎么改才可以?? 谢谢!!代码如下:create trigger trd_进仓
on 进仓
for delete
as
begin
update 结存 set 现有库存=现有库存- 进仓.入仓数 from 进仓 where 结存.代码=进仓.物料代码
if @@rowcount=0
insert 结存(代码,名称规格色别,现有库存) select 物料代码,名称规格色别,入仓数 from 进仓
end
create trigger tri_进仓
on 进仓
for insert , update
as
begin
update 结存set 现有库存=现有库存+ 进仓.入仓数from 进仓where 结存.代码=进仓.物料代码
if @@rowcount=0
insert 结存(代码,名称规格色别,现有库存) select 物料代码,名称规格色别,入仓数from 进仓
end

解决方案 »

  1.   

    create trigger trd_进仓
    on 进仓
    for delete
    as
    begin
    update 结存 set 现有库存=现有库存- 进仓.入仓数 from deleted where 结存.代码=deleted.物料代码
    if @@rowcount=0
    insert 结存(代码,名称规格色别,现有库存) select 物料代码,名称规格色别,入仓数 from deleted
    end
    create trigger tri_进仓
    on 进仓
    for insert , update
    as
    begin
    update 结存set 现有库存=现有库存+ inserted.入仓数from inserted where 结存.代码=inserted.物料代码
    if @@rowcount=0
    insert 结存(代码,名称规格色别,现有库存) select 物料代码,名称规格色别,入仓数from inserted
    end
      

  2.   

    create trigger trd_进仓
    on 进仓
    for delete
    as
    begin
    update 结存 set 现有库存=现有库存- deleted.入仓数 from deleted where 结存.代码=deleted.物料代码
    if @@rowcount=0
    insert 结存(代码,名称规格色别,现有库存) select 物料代码,名称规格色别,入仓数 from deleted
    end
    create trigger tri_进仓
    on 进仓
    for insert , update
    as
    begin
    update 结存set 现有库存=现有库存+ inserted.入仓数from inserted where 结存.代码=inserted.物料代码
    if @@rowcount=0
    insert 结存(代码,名称规格色别,现有库存) select 物料代码,名称规格色别,入仓数from inserted
    end
      

  3.   

    修改成xys_777楼主说的,还是有同样的错误提示。   是不是因为进仓表或者出仓表中有同一代码的物料出入库多次,才造成了:不能修改表的数据提示已更新或删除的行要么不能使该行成为唯一行,要么改变了多个行(2行),   这是什么原因???