Добавить необнуляемые столбцы в существующую таблицу на сервере SQL? - PullRequest
45 голосов
/ 15 февраля 2010

У меня уже есть таблица, которая состоит из данных. Мне нужно изменить таблицу, чтобы добавить два новых столбца, которые не являются нулевыми. Как я могу сделать это без потери существующих данных?


Вот что я попробовал (щелкнув правой кнопкой мыши по таблице и выбрав Дизайн):

  1. Добавлены новые столбцы «EmpFlag» (бит, ноль), «CreatedDate» (дата и время, нуль)

  2. Обновлен столбец 'EmpFlag' в таблице, чтобы иметь некоторые допустимые значения. (Просто хотел поработать над одним полем, поэтому я не обновлял поле «CreatedDate»)

  3. Теперь щелкните правой кнопкой мыши по таблице, оформьте и сделайте ее не нулевой.

Когда я пытался сохранить, появилось это сообщение об ошибке:

Сохранение изменений не разрешено. Изменения, которые вы внесли, требуют следующие таблицы должны быть удалены и воссозданы .

Ответы [ 3 ]

68 голосов
/ 15 февраля 2010

Вы просто устанавливаете значение по умолчанию в новых столбцах, и это позволит вам добавить их.

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
25 голосов
/ 15 февраля 2010

Если вы не хотите устанавливать по умолчанию столбцы, вы можете:

  1. создать новые столбцы как NULLable
  2. ОБНОВИТЬ существующие данные соответствующим образом
  3. добавить ограничение NOT NULL
1 голос
/ 11 июля 2017

Добавление новых столбцов NOT NULL со значениями по умолчанию можно сделать в графическом интерфейсе, как показано ниже. Изменение существующего на NOT NULL, похоже, совсем другая история. Я получаю то же сообщение, что и вы. Один из вариантов - создать новый столбец NOT NULL со значением по умолчанию для замены старого столбца, а затем скопировать данные старого столбца в данные нового столбца.

  1. Поместить таблицу в режиме конструктора (щелкните правой кнопкой мыши по таблице -> выберите Дизайн )
  2. Добавить столбец, выбрать тип данных
  3. Снимите отметку Разрешить пустые значения и установите Значение по умолчанию или привязку = значения по умолчанию, как показано ниже

enter image description here

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