我有一个表[Product],列[CreateTime] datetime为null,并且已经有一些数据。
如何将[CreateTime]列的默认值设置为getdate(),并使新添加的数据具有[CreateTime]列的默认值getdate()。
答案 0 :(得分:3)
您无法更改默认值 - 您需要先删除它,然后重新创建它。
要删除它,您需要知道它的名称,然后使用
ALTER TABLE dbo.Product
DROP CONSTRAINT yourOldDefaultConstraint
完成后,您可以添加新的默认约束,并将其应用于现有行,使用“WITH VALUES”部分:
ALTER TABLE dbo.Product
ADD CONSTRAINT NewDefaultConstraintName
DEFAULT GetDate() FOR CreateTime WITH VALUES
糟糕 - 抱歉,如果您在创建表时创建了DEFAULT约束,或者添加了列,则“WITH VALUES”似乎只能起作用 - 它似乎不会应用于现有列。
在这种情况下,您只需要遵循ALTER TABLE语句,如下所示:
UPDATE dbo.T_Product
SET CreateTime = GETDATE()
WHERE CreateTime IS NULL
那也应该做到这一点!
马克