Как написать sql, чтобы изменить значение столбца по умолчанию в sql server 2005?

У меня есть таблица [Product] со столбцом [CreateTime] datetime null, и в ней уже есть некоторые данные.

Как я могу установить значение по умолчанию для столбца [CreateTime] на getdate() и сделать так, чтобы новые добавленные данные имели значение по умолчанию getdate() для столбца [CreateTime].


person Mike108    schedule 01.09.2009    source источник


Ответы (1)


Вы не можете изменить значение по умолчанию — вам нужно будет сначала удалить его, а затем создать заново.

Для того, чтобы его сбросить, нужно знать его имя, а затем использовать

ALTER TABLE dbo.Product
  DROP CONSTRAINT yourOldDefaultConstraint

Сделав это, вы можете добавить новое ограничение по умолчанию, а чтобы применить его к существующим строкам, используйте часть «СО ЗНАЧЕНИЯМИ»:

ALTER TABLE dbo.Product
   ADD CONSTRAINT NewDefaultConstraintName
   DEFAULT GetDate() FOR CreateTime WITH VALUES

К сожалению, извините, похоже, что «СО ЗНАЧЕНИЯМИ» работает только в том случае, если вы создаете ограничение ПО УМОЛЧАНИЮ во время создания таблицы или если вы добавляете столбец — похоже, оно не применяется к существующему столбцу.

В этом случае вам просто нужно будет следовать за оператором ALTER TABLE примерно так:

UPDATE dbo.T_Product
SET CreateTime = GETDATE()
WHERE CreateTime IS NULL

Это тоже должно сработать!

Марк

person marc_s    schedule 01.09.2009