SQL触发器添加两列的值并将其存储在第三列中

时间:2014-05-19 16:05:23

标签: sql sql-server triggers

我有一个包含三列的表格,例如pqty,prqty和balqty。 我想要做的是,必须添加pqty和prqty的值。然后它应该存储在balqty中。插入或更新此表时,每行必须有效。 我使用了这个触发器,它有时会工作,而且大部分时间都不会。我不知道为什么。

CREATE TRIGGER tsl on stockledger
FOR update
AS declare @pqty int, @prqty int;
select @pqty=i.pqty from inserted i;
select @prqty=i.prqty from inserted i;
update Stockledger set balqty = (@pqty - @prqty) 
PRINT 'AFTER Update trigger fired.'

1 个答案:

答案 0 :(得分:4)

我认为这不是一个好用的触发器。相反,如果您有容量,请考虑使用计算列(使用PERSISTED来提高性能):

ALTER TABLE StockLedger DROP COLUMN balqty;
ALTER TABLE StockLedger ADD COLUMN balqty AS pqty - prqty PERSISTED;