Поделиться через


CREATE DEFAULT (Transact-SQL)

Применимо к:SQL ServerБаза данных SQL AzureУправляемый экземпляр SQL AzureБаза данных SQL в Microsoft Fabric

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

Внимание

Эта функция будет удалена в будущей версии SQL Server. Избегайте использования этого компонента в новых разработках и запланируйте изменение существующих приложений, в которых он применяется. Вместо этого используйте определения по умолчанию, созданные с помощью DEFAULT ключевого ALTER TABLE слова или CREATE TABLE.

Соглашения о синтаксисе Transact-SQL

Синтаксис

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

Аргументы

schema_name

Имя схемы, которой принадлежит значение по умолчанию.

default_name

Имя значения по умолчанию. Имена значений по умолчанию должны соответствовать правилам для идентификаторов. Указывать имя владельца по умолчанию не обязательно.

constant_expression

Выражение, содержащее только постоянные значения (не может включать имена столбцов или других объектов баз данных). Вы можете использовать любые константы, встроенные функции или математические выражения, за исключением тех, которые содержат типы данных псевдонимов. Определяемые пользователем функции нельзя использовать. Заключены константы символов и дат в одинарные кавычки ('); денежные, целые числа и константы с плавающей запятой не требуют кавычки. Двоичные данные должны предшествовать 0x, и денежные данные должны предшествовать знаку доллара ($). Тип значения по умолчанию должен соответствовать типу данных столбца.

Замечания

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

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

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

CREATE DEFAULT операторы не могут объединяться с другими Transact-SQL операторами в одном пакете.

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

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

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

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

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

Определение столбца Нет записи, значение по умолчанию отсутствует Нет записи, присвоено значение по умолчанию ВВОД NULL, значение по умолчанию не используется ВВОД NULL, по умолчанию
NULL NULL По умолчанию NULL NULL
NOT NULL Ошибка По умолчанию Ошибка Ошибка

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

Разрешения

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

Примеры

А. Создание базового символа по умолчанию

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

USE AdventureWorks2022;
GO

CREATE DEFAULT phonedflt
    AS 'unknown';

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

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

Примечание.

Опущение любой записи отличается от явного утверждения NULL в операторе INSERT .

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

USE AdventureWorks2022;
GO

EXECUTE sp_bindefault 'phonedflt', 'Person.PersonPhone.PhoneNumber';