我有一个名为InvStockTake (P)的生产表,该表将复制到另一个服务器上的也称为InvStockTake(R)的表。
将它们引用为P用于生产,R用于复制。
在复制表InvStockTake(R)上,我创建了一个insert触发器,如下所示,它将把插入的数据复制到另一个名为InvStockTakeReplicate(R)的表中。
ALTER TRIGGER [dbo].[trgAfterInsert] ON [dbo].[InvStockTake]
FOR INSERT
AS
insert into SysproCompanyR.dbo.InvStockTakeReplicate
(Warehouse,StockCode,Bin,OrigQtyOnHand,QtyCaptured,SaveDate,ProductClass,Uom,Reference,PrintedFlag,Decimals,NumTimesCaptured,CreatedBinFlag,SelectionCost)
SELECT Warehouse,StockCode,Bin,OrigQtyOnHand,QtyCaptured,SaveDate,ProductClass,Uom,Reference,PrintedFlag,Decimals,NumTimesCaptured,CreatedBinFlag,SelectionCost
FROM inserted; 问题是,我的生产表中的表会是这样的
Warehouse StockCode Bin OrigQtyOnHand QtyCaptured SaveDate ProductClass NumTimesCaptured
A1 20402205 S10D04 12 12 2016-10-27 333 3
A1 20402206 S10D03 11 11 2016-10-27 376 2
A1 30303021 S10F04 2 2 2016-10-27 354 1
A1 32700103 S10A04 1 1 2016-10-27 333 1当它被插入时,它将复制到我的另一个表中。
现在这个表的工作原理是,当仓库处于盘点模式时,人们将在这里连续捕获。因此,您将看到numerous列将随着众多人的捕获而更新,同时qtycaptured也会发生变化。
所以我还需要一个更新触发器,但是现在假设盘点完成了,2周后这个仓库A1被置于盘点模式,它将从我的生产数据库中清除所有A1盘点,并插入需要再次计算的库存的新记录。但现在保存日期将更改为新日期。
现在我假设当这种情况发生时,由于我只有一个插入触发器,它将只插入这些新记录。但是我的更新触发器会发生什么呢?它将需要用新的日期更新记录...
因此,如果有人可以帮助我完成这个更新触发器,那将会有很大的帮助,因为我最终需要构建一个表来保存所有不同的库存记录会话/版本。
发布于 2016-01-26 18:40:31
由于您希望保留每个记录的每个版本,因此UPDATE触发器可以与INSERT触发器相同。您所要做的就是将其从:
ALTER TRIGGER [dbo].[trgAfterInsert] ON [dbo].[InvStockTake]
FOR INSERT
AS 至:
ALTER TRIGGER [dbo].[trgAfterInsert] ON [dbo].[InvStockTake]
FOR INSERT, UPDATE
AS https://stackoverflow.com/questions/34989044
复制相似问题