Любая идея, почему запуск alter column заставляет столбец переходить из «не ноль» в «ноль»? - PullRequest
1 голос
/ 08 февраля 2011

Я массово обновляю базу данных SQL Server.Я изменяю все наши numeric(38,0) столбцы на int (да, сценарии SQL Server были созданы из сценариев Oracle) .

Использование SMO и C # (я swинженер) , мне удалось создать действительно хорошие сценарии, такие как SQL Server Management Studio .

Все это работает очень хорошо, за исключением одной конкретной проблемы:

Длянесколько таблиц, когда я звоню

ALTER TABLE [myTable] ALTER COLUMN [columnA] INT

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

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

С уважением,

Эрик.

Ответы [ 2 ]

4 голосов
/ 08 февраля 2011

из ALTER TABLE (Transact-SQL)

При создании или изменении таблицы с помощью операторов CREATE TABLE или ALTER TABLE настройки базы данных и сеанса влияют и, возможнопереопределить обнуляемость типа данных, который используется в определении столбца.Мы рекомендуем всегда явно указывать столбец как NULL или NOT NULL для невычисляемых столбцов.

4 голосов
/ 08 февраля 2011

Поскольку при отсутствии NOT NULL по умолчанию используется значение NULL.

ALTER TABLE [myTable] 
   ALTER COLUMN [columnA] INT NOT NULL
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...