获取在更新操作中更新的每个字段的值

本文关键字:更新 字段 操作 获取 | 更新日期: 2023-09-27 17:53:25

我想获取字段更新后的值,例如,我有两个表

table1:  ID       Price          UserID         type 
table2:  IDLog    ID(FK table1)  OldPrice  

和i更新表1中的Price:

UPDATE table1
SET    Price = '1111'
WHERE  TYPE = 1  

现在我想在每次更新之前得到值ID table1和插入到table2,
我如何得到价值的每一个领域??

获取在更新操作中更新的每个字段的值

我认为FOR UPDATE TRIGGER是可行的。这样就可以在DB中包含所有的日志逻辑。

更好的方法是在table1上使用触发器(当然是SQL Server端)。

CREATE TRIGGER table1_update ON table1 FOR UPDATE 
AS 
BEGIN
       INSERT INTO table2 (IDLog, OldPrice)
       SELECT ID, Price
       FROM deleted
          INNER JOIN inserted ON
               deleted.ID = inserted.ID
               deleted.Price <> inserted.Price
END

您可以使用output子句:

update table1
output inserted.ID into table2
set Price='1111' where type=1

可以先插入数据再更新。

INSERT INTO table2
SELECT ID, Price from table1
WHERE  TYPE = 1
--Update table1 after inserting
UPDATE table1
SET    Price = '1111'
WHERE  TYPE = 1  
另一种方法是为table1创建一个更新触发器,将更新后的数据插入到table2中。