用友软件想实现这样功能:核算模块新建或修改入库单,自动将入库单的存货更新成本,入库单明细表Rdrecords,存货单价字段iUnitCost,存货档案表Inventory,成本字段cInvCode,写了两个触发器如下:
Create Trigger Tri_RdrecordUpdate
On Rdrecords
For Update
As
If Update(iUnitCost)
begin
Update Inventory Set iInvNCost = i.iUnitCost
From Rdrecords,Inserted i,Deleted d
Where Inventory.cInvCode = d.cInvCode
EndgoCreate Trigger Tri_RdrecordInsert
On Rdrecords
After Insert
As
Update inventory Set iinvncost = i.iUnitCost
From rdrecords,Inserted i
Where rdrecords.autoid = i.autoid
go可现在问题是,从软件里新建或修改入库单里有两条数据时,会将后一条的单价更新给这两个存货,谁能告诉我这是为什么,怎么解决?
Create Trigger Tri_RdrecordUpdate
On Rdrecords
For Update
As
If Update(iUnitCost)
begin
Update Inventory Set iInvNCost = i.iUnitCost
From Rdrecords,Inserted i,Deleted d
Where Inventory.cInvCode = d.cInvCode
EndgoCreate Trigger Tri_RdrecordInsert
On Rdrecords
After Insert
As
Update inventory Set iinvncost = i.iUnitCost
From rdrecords,Inserted i
Where rdrecords.autoid = i.autoid
go可现在问题是,从软件里新建或修改入库单里有两条数据时,会将后一条的单价更新给这两个存货,谁能告诉我这是为什么,怎么解决?
On Rdrecords
For insert,Update
As
if not exists(select 1 from deleted)
begin
Update inventory Set iinvncost = i.iUnitCost
From rdrecords,Inserted i
Where rdrecords.autoid = i.autoid
Update Inventory
Set iInvNCost = i.iUnitCost
From Inserted i
Where Inventory.cInvCode = i.cInvCode
end
else If Update(iUnitCost)
begin
Update Inventory
Set iInvNCost = i.iUnitCost
From Inserted i
Where Inventory.cInvCode = i.cInvCode
Endgo
两表有没有 货品 字段?应该是有才正常