CREATE DEFAULT (Transact-SQL)

Создает объект с именем по умолчанию. Если не было задано значение, вставляемое в столбец, к которому привязывается объект (либо во все столбцы при работе с типом данных псевдонима), при связи с типом данных псевдонима или столбца это значение задается по умолчанию.

ms173565.note(ru-ru,SQL.90).gifВажно!
Функция CREATE DEFAULT будет удалена в будущих версиях Microsoft SQL Server. Избегайте применения функции CREATE DEFAULT в новых проектах, а также запланируйте внесение изменений в приложения, использующих ее в настоящее время. Взамен используйте определения по умолчанию, создаваемые с помощью ключевого слова DEFAULT инструкций ALTER TABLE и CREATE TABLE. Дополнительные сведения см. в разделе Изменение и создание определений DEFAULT.

Значок ссылки на разделСоглашения о синтаксисе в Transact-SQL

Синтаксис

CREATE DEFAULT [ schema_name . ] default_name 
AS constant_expression [ ; ]

Аргументы

  • schema_name
    Имя схемы, которой принадлежит значение по умолчанию.
  • default_name
    Имя значения по умолчанию. Имена значений по умолчанию должны соответствовать правилам для identifiers. Указывать имя владельца по умолчанию не обязательно.
  • constant_expression
    Выражение, содержащее только постоянные значения (не может включать имена столбцов или других объектов баз данных). Можно использовать любые константы, встроенные функции или математические выражения, за исключением тех, которые содержат типы данных псевдонимов. Нельзя использовать пользовательские функции. Константы символьного типа и даты необходимо заключать в одинарные кавычки ('); константы, имеющие тип денежных данных, а также целочисленные и с плавающей точкой в кавычки не заключаются. Двоичные данные должны сопровождаться знаком 0x, а денежные данные — знаком доллара ($). Тип значения по умолчанию должен соответствовать типу данных столбца.

Замечания

Имя по умолчанию может быть создано только в текущей базе данных. Внутри базы данных имена по умолчанию должны быть уникальны в схеме. После создания значения по умолчанию, чтобы привязать его к типу данных столбца или псевдонима, используйте процедуру sp_bindefault.

Если значение по умолчанию не совместимо со столбцом, к которому оно привязывается, то при попытке его вставки в столбец SQL Server формирует сообщение об ошибке. Например, значение N/A не может быть использовано по умолчанию для столбца, содержащего числовые данные.

Если значение является слишком длинным для столбца, к которому оно привязывается, то происходит его усечение.

Инструкции CREATE DEFAULT не могут использоваться в одном пакете с другими инструкциями Transact-SQL.

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

Каждому столбцу соответствуют значение по умолчанию и связанное с ним правило, причем значение по умолчанию должно соответствовать правилу. Значение по умолчанию, не удовлетворяющее правилу, не будет вставлено, а SQL Server будет выдавать ошибку при каждой попытке подобной вставки.

При привязке к столбцу значение по умолчанию вставляется при следующих условиях.

  • Значение вставляется неявным образом.
  • При выполнении функции INSERT для вставки значений по умолчанию используются ключевые слова DEFAULT VALUES или DEFAULT.

Если при создании столбца было указано NOT NULL и не были созданы значения по умолчанию, то при попытке записи в данный столбец будет выдаваться сообщение об ошибке. В следующей таблице представлена связь между фактом существования значения по умолчанию и определением столбца как NULL или NOT NULL. Записи таблицы отображают результаты.

Определение столбца Нет записи, значение по умолчанию отсутствует Нет записи, присвоено значение по умолчанию Введено NULL, значение по умолчанию отсутствует Введено NULL, значение по умолчанию

NULL

NULL

Значение по умолчанию

NULL

NULL

NOT NULL

Ошибка

Значение по умолчанию

Ошибка

Ошибка

ms173565.note(ru-ru,SQL.90).gifПримечание.
Настройка процедуры sp_dbcmptlevel определяет, как SQL Server представляет пустую строку: она может рассматриваться как одиночный пробел или как вещественная пустая строка. Если уровень совместимости меньше или равен 65, SQL Server рассматривает пустые строки как одиночные пробелы. Если уровень совместимости равен 70, SQL Server рассматривает пустые строки как пустые строки. Дополнительные сведения см. в разделе sp_dbcmptlevel (Transact-SQL).

Чтобы переименовать значение по умолчанию, используйте процедуру sp_rename. Чтобы получить отчет о значении по умолчанию, используйте процедуру sp_help.

Разрешения

Чтобы вызвать команду CREATE DEFAULT, пользователь должен обладать разрешением CREATE DEFAULT в текущей базе данных и разрешением ALTER на схему, в которой создается значение по умолчанию.

Примеры

А. Создание простого символьного значения по умолчанию

В следующем примере создается символьное значение по умолчанию с именем unknown.

USE AdventureWorks;
GO
CREATE DEFAULT phonedflt AS 'unknown';

Б. Привязка значения по умолчанию

При выполнении следующего примера производится привязка созданного в примере A значения по умолчанию. Значение по умолчанию используется в случае, когда в столбце Phone таблицы Contact нет записи. Обратите внимание, что пропуск записи отличается от явного указания значения NULL в инструкции INSERT.

Выполнение следующей инструкции Transact-SQL заканчивается сбоем, так как не существует значения по умолчанию phonedflt. Данный пример служит только для демонстрационных целей.

USE AdventureWorks;
GO
sp_bindefault 'phonedflt', 'Person.Contact.Phone';

См. также

Справочник

ALTER TABLE (Transact-SQL)
CREATE RULE (Transact-SQL)
CREATE TABLE (Transact-SQL)
DROP DEFAULT (Transact-SQL)
DROP RULE (Transact-SQL)
Выражения (Transact-SQL)
INSERT (Transact-SQL)
sp_bindefault (Transact-SQL)
sp_help (Transact-SQL)
sp_helptext (Transact-SQL)
sp_rename (Transact-SQL)
Хранимая процедура sp_unbindefault (Transact-SQL)

Другие ресурсы

Пакеты
Использование идентификаторов в качестве имен объектов

Справка и поддержка

Получение помощи по SQL Server 2005