我有一个存储过程,它从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
之后的输出如下:
table | OldWaterMark | NewWaterMark | 22/12/2022 | 23/12/2022 | 表b
---|---|---|
21/12/2022 | 22/12/2022 |
只需在UPDATE语句中再添加一行即可。这额外的一行将当前水印保存到旧水印字段中。
UPDATE watermarktable
SET [OldWaterMark] = [NewWatermark],
[NewWatermark] = @LastModifiedtime
WHERE [TableName] = @TableName
请注意,当你在一个表的第一个水印(所以直到那时,newwatermark
是NULL),这个NULL值被转移到oldwatermark
。只有第二次更新-newwatermark
已经有一个值-是一个非null值复制到oldwatermark
。