Принудительное значение по умолчанию при добавлении столбца в таблицу - SQL Server - PullRequest
5 голосов
/ 19 сентября 2008

В SQL Server 2000/2005,

Можно ли принудительно записать значение по умолчанию в уже существующие строки при добавлении нового столбца в таблицу без с использованием NOT NULL для нового столбца?

Ответы [ 4 ]

10 голосов
/ 19 сентября 2008

Вам нужно два утверждения. Сначала создайте столбец с ненулевым значением. Затем измените ненулевое ограничение на nullable

alter table mytable add mycolumn varchar(10) not null default ('a value')
alter table mytable alter column mycolumn varchar(10) null
4 голосов
/ 19 сентября 2008

Я понимаю ваш вопрос, но вы говорите, что для будущих записей NULL (неизвестный, неопределенный или какой бы ни была ваша семантика) является приемлемым (но если он пропущен во вставке, будет значение по умолчанию), но это для всех существующих данных вы собираетесь пойти дальше и назначить им значение по умолчанию.

Мне бы пришлось внимательно изучить эту ситуацию и спросить, почему вы вообще собираетесь разрешить использование NULL в будущих записях - учитывая, что ни в одной из исторических записей не будет этого, и для будущих записей есть значение по умолчанию.

1 голос
/ 19 сентября 2008

Сомневаюсь.

http://msdn.microsoft.com/en-us/library/ms190273(SQL.90).aspx

Подход, рекомендуемый Microsoft, следующий (взято из URL выше)

UPDATE MyTable SET NullCol = N'some_value' WHERE NullCol IS NULL
ALTER TABLE MyTable ALTER COLUMN NullCOl NVARCHAR(20) NOT NULL
0 голосов
/ 26 апреля 2016

ALTER TABLE {TABLENAME} ADD {COLUMNNAME} {TYPE} {NULL|NOT NULL} CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE} [**WITH VALUES]**

С ЗНАЧЕНИЯМИ может использоваться для сохранения значения по умолчанию в новом столбце для каждой существующей строки в таблице.

подробнее о ссылке MSDN. https://msdn.microsoft.com/en-in/library/ms190273.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...