SQL Server 2017 触发器将旧值作为更新后的新值
Posted
技术标签:
【中文标题】SQL Server 2017 触发器将旧值作为更新后的新值【英文标题】:SQL Server 2017 trigger for old value as new value for AFTER UPDATE 【发布时间】:2020-01-06 14:33:57 【问题描述】:我使用 SQL Server 2017 Management Studio。我需要一个用于AFTER UPDATE
的触发器(trigg_1
),它在col_1
列中插入旧值而不是新值。我将使用新值手动更改列col_1
,并且触发器需要使用旧值更改col_1
。
CREATE TRIGGER trigg_1
ON table_1
AFTER UPDATE
AS
BEGIN
END
GO
【问题讨论】:
这能回答你的问题吗? SQL Server : trigger how to read value for Insert, Update, Delete 您想要的值将在 Deleted 表中,Update Deletes then Inserts。 所以col_1
的值不能更新?
样本数据和期望的结果会有所帮助。目前还不清楚触发器应该更改哪些数据。
【参考方案1】:
试试这个:
CREATE TRIGGER trigg_1
ON table_1
AFTER UPDATE
AS
BEGIN
UPDATE T2
SET T2.COL_1 = T1.COL_1
FROM DELETED T1
INNER JOIN TABLE_1 T2 ON T2.ID = T1.ID /* Here you must link by PK - I suggested PK contains only ID column. */
END
GO
【讨论】:
以上是关于SQL Server 2017 触发器将旧值作为更新后的新值的主要内容,如果未能解决你的问题,请参考以下文章
如何在 SQL Server 的触发器中获取多个字段的旧值和新值?