我有2个更新语句如下:我正在使用SQL Server 2012
DECLARE @Duetoday DATETIME = GETDATE()
UPDATE A
SET APPRL_DUE = CASE WHEN MTNG_DT_SCHD IS NOT NULL THEN DATEADD(D,25,MTNG_DT_SCHD) ELSE APPRL_DUE END
FROM #1 A
UPDATE A
SET Days_Due = CASE WHEN DT_APPROVED IS NOT NULL THEN DATEDIFF(DAY,MTNG_DT_SCHD,DT_APPROVED) ELSE DATEDIFF(DAY,@Duetoday,APPRL_DUE) END
FROM #1 A
正如您所见,Days_Due基于Approval Due的值。对于Eg:在第一次更新之前曾经是10/22的记录的批准,在这种情况下,Days_Due将是11,现在假设在第一次更新之后批准到期是10/29但是Days Due仍然是11而不是18。
在dev和QA环境中,这不会导致问题,但我们的生产服务器设置了并行性,可能导致第二次更新在第一次更新之前或期间运行?
我知道我可以将更新语句合二为一。我需要知道的是如何在不组合更新语句的情况下处理这个问题,以及如何在dev或QA中测试它?
感谢。