SQL - 仅在其他字段不同时更改Date_Updated字段?

时间:2013-02-25 05:19:52

标签: sql sql-server tsql sql-update

SPROC的查询部分示例:

Update MyTable
SET
  ProductName=@ProductName
 ,ProductPrice=@ProductPrice
 ,Date_Updated=GETDATE()
WHERE ProductID=@ProductID

我想在Date_Updated字段上使用GETDATE(),只要在调用更新之前ProductName或ProductPrice已从其原始值更改。

请帮助:)

1 个答案:

答案 0 :(得分:0)

使用CASE条件来测试新值是否等于列的先前值。

Update  MyTable
SET     ProductName  = @ProductName,
        ProductPrice = @ProductPrice,
        Date_Updated =  CASE WHEN (ProductName <> @ProductName) OR 
                                  (ProductPrice <> @ProductPrice) 
                             THEN GETDATE() 
                             ELSE Date_Updated 
                        END
WHERE ProductID = @ProductID