Как добавить столбец со значением по умолчанию в существующую таблицу в SQL Server 2000 / SQL Server 2005 ?
2767
Как добавить столбец со значением по умолчанию в существующую таблицу в SQL Server 2000 / SQL Server 2005 ?
Ответы:
Синтаксис:
Пример:
Ноты:
Имя необязательного ограничения:
если вы не укажете,
CONSTRAINT D_SomeTable_SomeCol
SQL Server автоматически сгенерируетограничение по умолчанию с забавным именем, например:
DF__SomeTa__SomeC__4FB7FEF6
Дополнительное С-Values Заявление: только необходимо , когда ваша колонка обнуляемая и вы хотите по умолчанию значения , используемым для существующих записей. Если ваш столбец есть , он будет автоматически использовать значение по умолчанию для всех существующих записей, независимо от того, указали вы это или нет.
WITH VALUES
NOT NULL
WITH VALUES
Как вставки работают с ограничением по умолчанию:
если вы вставляете запись в значение
SomeTable
и не указываетеSomeCol
его значение, то по умолчанию оно устанавливается на0
.Если вы вставите значение «Запись и указать
SomeCol
» какNULL
(а ваш столбец допускает пустые значения),то ограничение по умолчанию не будет использоваться и
NULL
будет вставлено как значение.Примечания были основаны на отличной обратной связи ниже.
Особая благодарность:
@Yatrix, @WalterStabosz, @YahooSerious и @StackMan за их комментарии.
источник
NOT NULL
. Пожалуйста, попробуйте это:create table blah(a int not null primary key clustered); insert blah values (1), (2); alter table blah add b int null constraint df_blah_b default (0); select * from blah;
вы увидите 2 пустых значения для столбцаb
.WITH VALUES
для обновления существующих обнуляемых строк. См. MSDN : «Если добавленный столбец допускает нулевые значения иWITH VALUES
указан, значение по умолчанию сохраняется в новом столбце, добавляется в существующие строки».Включение DEFAULT заполняет столбец в существующих строках значением по умолчанию, поэтому ограничение NOT NULL не нарушается.
источник
При добавлении обнуляемого столбца ,
WITH VALUES
будет гарантировать , что значение конкретных умолчанию применяются к существующим строкам:источник
DEFAULT
ограничением всегда будет иметь значение, то есть не будет NULL, даже еслиNOT NULL
он не указан.BIT
данных, я говорил об этой конкретнойBIT
колонке . Посмотрите на ответ, столбец объявлен какNOT NULL
.источник
источник
Остерегайтесь, когда столбец, который вы добавляете, имеет
NOT NULL
ограничение, но не имеетDEFAULT
ограничения (значения). ОператорALTER TABLE
потерпит неудачу в том случае, если в таблице есть какие-либо строки. Решение состоит в том, чтобы либо удалитьNOT NULL
ограничение из нового столбца, либо предоставитьDEFAULT
для него ограничение.источник
Самая простая версия с двумя строками
источник
Использование:
источник
Если вы хотите добавить несколько столбцов, вы можете сделать это следующим образом:
источник
Использование:
Ссылка: ALTER TABLE (Transact-SQL) (MSDN)
источник
Чтобы добавить столбец в существующую таблицу базы данных со значением по умолчанию, мы можем использовать:
Вот еще один способ добавить столбец в существующую таблицу базы данных со значением по умолчанию.
Ниже приведен гораздо более подробный сценарий SQL для добавления столбца со значением по умолчанию, включая проверку наличия столбца перед его добавлением, а также проверку ограничения и удаление его, если оно есть. Этот сценарий также называет ограничение, чтобы у нас было хорошее соглашение об именах (мне нравится DF_), и если нет, SQL даст нам ограничение с именем, которое имеет случайно сгенерированный номер; так что приятно иметь возможность назвать ограничение тоже.
Это два способа добавить столбец в существующую таблицу базы данных со значением по умолчанию.
источник
Вы можете сделать это с T-SQL следующим образом.
Кроме того, вы можете использовать SQL Server Management Studio также, щелкнув правой кнопкой мыши по таблице в меню «Дизайн» и установив значение по умолчанию «Таблица».
И более того, если вы хотите добавить один и тот же столбец (если он не существует) ко всем таблицам в базе данных, используйте:
источник
В SQL Server 2008-R2 я перехожу в режим разработки - в тестовой базе данных - и добавляю свои два столбца с помощью конструктора и выполняю настройки с помощью графического интерфейса, а затем пресловутая Right-Clickопция « Создать сценарий изменения »!
Появится всплывающее окно с небольшим, как вы уже догадались, правильно отформатированным скриптом с гарантированными изменениями. Нажмите легкую кнопку.
источник
Кроме того, вы можете добавить значение по умолчанию, не называя ограничение явно:
Если у вас есть проблема с существующими ограничениями по умолчанию при создании этого ограничения, то их можно удалить:
источник
Это можно сделать и в графическом интерфейсе SSMS. Я показываю дату по умолчанию ниже, но значение по умолчанию может быть любым, конечно.
(getdate())
илиabc
или0
любое другое значение в поле « Значение по умолчанию» или «Связывание», как показано ниже:источник
В статье MSDN ALTER TABLE (Transact-SQL) представлен весь синтаксис таблицы изменений.
источник
Пример:
источник
Пример:
источник
Сначала создайте таблицу с именем студента:
Добавьте к нему один столбец:
Таблица создается, и в существующую таблицу добавляется столбец со значением по умолчанию.
источник
На это есть много ответов, но я чувствую необходимость добавить этот расширенный метод. Это кажется намного дольше, но это чрезвычайно полезно, если вы добавляете поле NOT NULL в таблицу с миллионами строк в активной базе данных.
Для этого нужно добавить столбец как пустое поле со значением по умолчанию, обновить все поля до значения по умолчанию (или вы можете назначить более значимые значения), и, наконец, столбец будет иметь значение NOT NULL.
Причина этого заключается в том, что если вы обновляете крупномасштабную таблицу и добавляете новое ненулевое поле, оно должно записываться в каждую строку и тем самым блокирует всю таблицу по мере добавления столбца, а затем записывает все значения.
Этот метод добавит обнуляемый столбец, который работает намного быстрее сам по себе, а затем заполняет данные перед установкой ненулевого статуса.
Я обнаружил, что выполнение всего этого в одном операторе заблокирует одну из наших более активных таблиц на 4-8 минут, и довольно часто я убиваю процесс. Этот метод каждой части обычно занимает всего несколько секунд и вызывает минимальную блокировку.
Кроме того, если у вас есть таблица размером в миллиарды строк, возможно, стоит обновить пакет следующим образом:
источник
Попробуй это
источник
SQL Server + Изменить таблицу + Добавить столбец + Значение по умолчанию uniqueidentifier
источник
источник
NOT EXISTS
чек, прежде чем пытаться изменить таблицу. Очень хорошее решение Некоторые дополнительные комментарии о том, как это работает, сделают его еще более полезным.источник
Добавьте новый столбец в таблицу:
Например,
Если пользователь хочет увеличить его автоматически, тогда:
источник
Это для SQL Server:
Пример:
Если вы хотите добавить ограничения, то:
источник
Это можно сделать с помощью приведенного ниже кода.
источник
Попробуйте выполнить следующий запрос:
Это добавит новый столбец в таблицу.
источник
Из этого запроса вы можете добавить столбец целого типа данных со значением по умолчанию 0.
источник
Ну, теперь у меня есть некоторые изменения в моем предыдущем ответе. Я заметил, что ни один из ответов не упоминается
IF NOT EXISTS
. Поэтому я собираюсь предложить новое решение, поскольку столкнулся с некоторыми проблемами при изменении таблицы.Вот
TaskSheet
конкретное имя таблицы иIsBilledToClient
новый столбец, который вы собираетесь вставить, и1
значение по умолчанию. Это означает, что в новом столбце будет значение существующих строк, поэтому один из них будет установлен там автоматически. Тем не менее, вы можете изменить, как пожелаете, с учетом типа столбца, который я использовалBIT
, поэтому я установил значение по умолчанию 1.Я предлагаю вышеупомянутую систему, потому что я столкнулся с проблемой. Так в чем проблема? Проблема в том, что если
IsBilledToClient
столбец существует в таблице, то, если вы выполните только часть кода, приведенную ниже, вы увидите ошибку в построителе запросов SQL-сервера. Но если он не существует, то в первый раз не будет ошибки при выполнении.источник