NULL необходим? - PullRequest
       39

NULL необходим?

0 голосов
/ 28 мая 2019

Требуется ли NULL или NOT NULL для добавления столбца в SQL Server? (Если вы собираетесь запускать оператор UPDATE после)

Я тестировал без него локально, и, похоже, он отлично работает как в SQL, так и на веб-сайте; но я хотел убедиться перед запуском выпуска / производства.

Я просмотрел некоторые другие статьи, включая веб-сайт Microsoft. Некоторые показывают это с, некоторые без. В статьях SO говорится о некоторых преимуществах NULL, например, если у вас есть информация, которая может быть добавлена ​​позже. Но если я собираюсь запустить UPDATE для добавления значений после, это будет иметь значение?

Полагаю, это не имеет значения из того, что я тестировал и читал.

ALTER TABLE [dbo].[MyTable] ADD NewColumn varchar(150);
UPDATE [dbo].[MyTable] SET NewColumn ='Math' WHERE ID = 1
UPDATE [dbo].[MyTable] SET NewColumn ='Science' WHERE ID = 2

Ответы [ 3 ]

1 голос
/ 28 мая 2019

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

Имейте в виду, что если в вашей таблице уже есть данные, вы НЕ МОЖЕТЕ добавить столбец как NOT NULL. Для этого сначала необходимо добавить столбец как NULL, затем ОБНОВИТЬ значения с недействительными данными, а затем изменить столбец на NOT NULL.

Редактировать: Предполагая поведение сервера SQL по умолчанию при добавлении столбцов.

0 голосов
/ 28 мая 2019

Я бы удостоверился, что у вас есть что-то декларативное.И если вы устанавливаете значение «не ноль», убедитесь, что у вас есть значение по умолчанию, или использование может привести к потере МНОГО данных, если данные ранее существовали.Это заставляет меня нервничать, потому что это ALTER против CREATE.

0 голосов
/ 28 мая 2019

Вам не нужно писать это, когда вы пропустите это, столбец будет создан как 'NULL'.
Следующие утверждения равны:

ALTER TABLE [dbo].[MyTable] ADD NewColumn varchar(150);
ALTER TABLE [dbo].[MyTable] ADD NewColumn varchar(150) NULL;

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

...