Сценарий обновления для обновления поля таблицы в SQL Server с NULL до ненулевого - PullRequest
5 голосов
/ 18 ноября 2008

У меня есть поле (скажем, foo) в таблице в базе данных SQL Server, которое изначально было определено как обнуляемое, но новые требования указывают, что это поле должно быть ненулевым.

Каков наилучший способ обновления этого поля до ненулевого значения с помощью сценария обновления без удаления содержимого таблицы? Я попытался сгенерировать сценарий из представления Design, но во время выполнения произошел сбой, поскольку текущее содержимое таблицы содержало значения NULL для foo. Хуже того, если я проигнорировал эту ошибку, он продолжит удалять все содержимое таблицы!

Ответы [ 2 ]

10 голосов
/ 18 ноября 2008

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

-- Clean up the data which won't comply with the schema changes
UPDATE t SET foo = 0 WHERE foo IS NULL

-- Apply the NOT NULL
ALTER TABLE t ALTER COLUMN foo int NOT NULL

-- Add a default for the future if that's what you want
ALTER TABLE t ADD CONSTRAINT t_foo_def DEFAULT 0 FOR foo
0 голосов
/ 18 ноября 2008

Вы можете установить значение по умолчанию для поля, не допускающего значения NULL. Если вы хотите изменить его с nullable на not-nullable, вы должны указать какое-то значение, которое может быть присвоено строкам с нулевым значением в этом поле.

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