Добавить столбцы с нулевым значением в существующую таблицу на SQL-сервере?
У меня уже есть таблица, состоящая из данных. Мне нужно изменить таблицу, чтобы добавить два новых столбца, которые не равны нулю. Как я могу это сделать без потери существующих данных?
Вот что я пробовал (щелкнув правой кнопкой мыши таблицу и выбрав "Дизайн" ):
-
Добавлены новые столбцы "EmpFlag" (бит, null), "CreatedDate" (datetime,
нуль)
-
Обновлен столбец "EmpFlag" в таблице, чтобы иметь некоторые допустимые значения. (Просто хотел работать над одним полем, поэтому я не обновил поле "CreatedDate" )
-
Теперь щелкнул правой кнопкой мыши таблицу, дизайн и сделал ее не нулевой.
Когда я попытался сохранить, появилось это сообщение об ошибке:
Сохранение изменений не допускается. Необходимые изменения требуют следующие таблицы будут удалены и повторно созданы.
Ответы
Ответ 1
Вы только установили значение по умолчанию в новых столбцах, и это позволит вам их добавить.
alter table table_name
add column_name datetime not null
constraint DF_Default_Object_Name default (getdate())
или этот для поля varchar.
alter table table_name
add column_name varchar(10) not null
constraint DF_Default_Object_Name default ('A')
Вы также можете отказаться от значения по умолчанию, если оно вам не понадобится после добавления столбца.
alter table table_name
drop constraint DF_Default_Object_Name
Ответ 2
Если вы не хотите размещать по умолчанию столбцы, вы можете:
- создать новые столбцы как NULLable
- ОБНОВЛЯЙТЕ существующие данные соответствующим образом
- добавить ограничение NOT NULL
Ответ 3
Добавление новых столбцов NOT NULL с настройками по умолчанию может быть выполнено в графическом интерфейсе, как показано ниже. Изменение существующего значения NOT NULL выглядит по-другому. Я получаю то же сообщение, что и у вас. Одним из вариантов было бы создать новый столбец NOT NULL со значением по умолчанию, чтобы заменить старый столбец, а затем скопировать старые данные столбца в новые данные столбца.
- Поместите таблицу в представление дизайна (щелкните правой кнопкой мыши по таблице- > выберите "Дизайн" )
- Добавить столбец, выбрать тип данных
- Снимите флажок "Разрешить Nulls" и установите значение по умолчанию или Binding = ваши значения по умолчанию, как показано ниже
![введите описание изображения здесь]()