Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Alter Table  [new]
danton
Member

Откуда:
Сообщений: 170
Добрый день! Есть большая таблица продаж

Добавляю в нее новое поле и хочу сделать его not Null

ALTER TABLE [dbo].[sales]
ADD [sal_DocumentNrBase] char(50) COLLATE Croatian_CI_AS NULL
GO

ALTER TABLE [dbo].[sales]
ALTER COLUMN [sal_DocumentNrBase] char(50) COLLATE Croatian_CI_AS NOT NULL
GO

Но постоянно выдает ошибку, о том что не нулевое поле нельзя вставить. Вставил NULL.
Как все же вставить поле не допускающее NULL.
3 фев 12, 12:36    [12025429]     Ответить | Цитировать Сообщить модератору
 Re: Alter Table  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Т.е. у вас в поле нет данных, а вы его not null делаеаете и удивляетесь, что сервер ругается, что в поле есть таки null?
3 фев 12, 12:38    [12025448]     Ответить | Цитировать Сообщить модератору
 Re: Alter Table  [new]
danton
Member

Откуда:
Сообщений: 170
Гавриленко Сергей Алексеевич,

да я поимаю, что это тупо и так и подумал,

не понимаю на каком этапе я могу сделать это поле NOT NULL?

Как только появятся какие-то данные?
3 фев 12, 12:42    [12025489]     Ответить | Цитировать Сообщить модератору
 Re: Alter Table  [new]
Glory
Member

Откуда:
Сообщений: 104751
ALTER TABLE [dbo].[sales]
ADD [sal_DocumentNrBase] char(50) COLLATE Croatian_CI_AS NOT NULL DEFAULT ''
3 фев 12, 12:44    [12025516]     Ответить | Цитировать Сообщить модератору
 Re: Alter Table  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
danton
Гавриленко Сергей Алексеевич,

да я поимаю, что это тупо и так и подумал,

не понимаю на каком этапе я могу сделать это поле NOT NULL?

Как только появятся какие-то данные?
Через дефолт, как уже сказали. Однако, когда данных много, бывает выгоднее через апдейт делать.
3 фев 12, 12:45    [12025525]     Ответить | Цитировать Сообщить модератору
 Re: Alter Table  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
danton
Гавриленко Сергей Алексеевич,

да я поимаю, что это тупо и так и подумал,

не понимаю на каком этапе я могу сделать это поле NOT NULL?

Как только появятся какие-то данные?
Так у Вас в таблице есть записи или нет?
Если нет, то сразу NOT NULL при создании поля задавайте,
а если есть, то до изменения на NOT NULL поле надо проапдейтить.

Другой подход - задать полю при создании NOT NULL значение по-умолчанию.
Потом проапдейтить
3 фев 12, 12:46    [12025534]     Ответить | Цитировать Сообщить модератору
 Re: Alter Table  [new]
Crimean
Member

Откуда:
Сообщений: 13147
добавить с дефолт констрейнтом, после добавления дефолт прибить, если он не нужен
имхо это дешевле, чем после update делать, да и 1 оператор вместо 2
3 фев 12, 13:22    [12025962]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить