SQL Server: ALTER с ДОБАВИТЬ новый столбец - PullRequest
8 голосов
/ 17 февраля 2012

У меня есть следующий оператор в SQL Server:

ALTER TABLE [dbo].[TruckTbl] 
ADD [TruckState] [bit] NULL DEFAULT 0;

Для этого по умолчанию для любой НОВОЙ записи будет установлено значение 0.

Для существующих записей, как я могу получить и сказать в заявлении, также по умолчанию те в 0.

Я знаю, что могу пойти и сделать обновление, но в любом случае сделать это в обновлении в вышеприведенном выражении ALTER?

Ответы [ 2 ]

18 голосов
/ 17 февраля 2012

Используйте предложение WITH VALUES

 ALTER TABLE [dbo].[TruckTbl] ADD [TruckState] [bit] NULL DEFAULT 0 WITH VALUES;

Хотя я согласен с другим ответом, кажется странным, что столбец вообще может быть обнуляем, если вы устанавливаете все существующие строкина 0 и по умолчанию для будущих вставок.Вам когда-нибудь нужно разрешить NULL в качестве значения столбца здесь?

1 голос
/ 22 декабря 2015
ALTER TABLE {TABLENAME} 
ADD {COLUMNNAME} {TYPE} {NULL|NOT NULL} 
CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE}
[WITH VALUES]

Например

ALTER TABLE Temp
ADD ID int NOT NULL DEFAULT(1)
...