2012-02-17 3 views
8

У меня есть следующее заявление в SQL Server:SQL Server: ALTER с ADD новый столбец

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

Что это будет делать это как по умолчанию любой новой записи в 0.

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

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

+0

Если ваше поле BIT * действительно * быть обнуляемым? Это в основном делает его тристатом, а не бистатом. Если это поле не разрешало null, все предыдущие записи получили бы ваше заданное значение по умолчанию! – Jamiec

ответ

18

Используйте WITH VALUES пункт

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

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

+2

Прохладный, никогда не знал *, что * существует. – Jamiec

0
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) 
+0

Добавить комментарии, почему вы его понизили. –

Смежные вопросы