首页 > 解决方案 > 设置更新 SQL Server 表中的行的默认日期

问题描述

我有一个带有 ID、City、CreateDate、UpdateDate 列的 SQL Server 表。每当创建新行时,都会添加默认值(这按预期工作)。就像新行的默认值一样,如何在更新行时设置默认日期,即如果我更新表格(如下所示),UpdateDate 应该有默认值 GetDate()。

CREATE TABLE TestTable 
(
     ID Int, 
     City Varchar(100), 
     CreateDate Datetime, 
     UpdateDate Datetime
);

ALTER TABLE TestTable 
    ADD CONSTRAINT [Constraint_CreateDate] DEFAULT (GETDATE()) FOR [CreateDate];

INSERT INTO TestTable (ID, City) 
VALUES (1, 'DC');

UPDATE TestTable 
SET City = 'NY' 
WHERE ID = 1; -- How to populate the UpdateDate when this update happen.

标签: sqlsql-server

解决方案


DEFAULT约束在插入新行时有效,并且没有声明性方式来定义更新的默认值。你只需要在你的UPDATE声明中明确地做到这一点:

UPDATE TestTable 
SET City = 'NY',
    UpdateDate = SYSDATETIME()
WHERE ID = 1;

推荐阅读