我想在更新后获取字段的值,例如我有两个表
table1: ID Price UserID type
table2: IDLog ID(FK table1) OldPrice
我更新了表 1 中的价格:
UPDATE table1
SET Price = '1111'
WHERE TYPE = 1
现在我想在每次更新之前获取值 ID 表 1 并插入表 2,
我如何获取每个字段的值?
恕我直言FOR UPDATE TRIGGER
是要走的路。这样您就可以在数据库中包含所有日志记录逻辑。
更好的方法是在 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
您可以使用输出子句:
update table1
output inserted.ID into table2
set Price='1111' where type=1
您可以在更新之前将数据插入 table2。
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。