在SQL Server中基于另一个列更新一个列



我有一个存储过程,它从ADF管道中获取值,以在SQL Server表中写入水印值。新的水印值基本上取代了旧的水印值,不留下旧的记录。

但是,我的新要求是保留旧的水印值。

我当前帮助更新表的进程很简单。

ALTER PROCEDURE [dbo].[usp_write_watermark] @LastModifiedtime datetime, @TableName varchar(50)
AS
BEGIN
UPDATE watermarktable
SET [WatermarkValue] = @LastModifiedtime
WHERE [TableName] = @TableName
END

之后的输出如下:

tbody> <<tr>为多表b
tableOldWaterMarkNewWaterMark
22/12/202223/12/2022
21/12/202222/12/2022

只需在UPDATE语句中再添加一行即可。这额外的一行将当前水印保存到旧水印字段中。

UPDATE watermarktable
SET [OldWaterMark] = [NewWatermark],
[NewWatermark] = @LastModifiedtime  
WHERE [TableName] = @TableName

请注意,当你在一个表的第一个水印(所以直到那时,newwatermark是NULL),这个NULL值被转移到oldwatermark。只有第二次更新-newwatermark已经有一个值-是一个非null值复制到oldwatermark

最新更新