如何编写sql来设置在sql server 2005中修改列的默认值?

时间:2009-09-01 04:31:55

标签: sql-server alter

我有一个表[Product],列[CreateTime] datetime为null,并且已经有一些数据。

如何将[CreateTime]列的默认值设置为getdate(),并使新添加的数据具有[CreateTime]列的默认值getdate()。

1 个答案:

答案 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

那也应该做到这一点!

马克