CREATE DEFAULT (Transact-SQL)
Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure
Создает объект «Значение по умолчанию». Если этот объект привязан к столбцу или псевдониму типа данных, он указывает значение, которое должно вставляться в столбец (или во все столбцы псевдонима типа данных), если при вставке значение не задано явно.
Внимание
Эта функция будет удалена в будущей версии 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 будет создавать ошибку при каждой попытке вставить его.
При привязке к столбцу значение по умолчанию вставляется при следующих условиях.
Значение вставляется неявным образом.
При выполнении функции INSERT для вставки значений по умолчанию используются ключевые слова DEFAULT VALUES или DEFAULT.
Если при создании столбца было указано NOT NULL и не были созданы значения по умолчанию, то при попытке записи в данный столбец будет выдаваться сообщение об ошибке. В следующей таблице представлена связь между фактом существования значения по умолчанию и определением столбца как NULL или NOT NULL. Записи таблицы отображают результаты.
Определение столбца | Нет записи, значение по умолчанию отсутствует | Нет записи, присвоено значение по умолчанию | Введено NULL, значение по умолчанию отсутствует | Введено NULL, значение по умолчанию |
---|---|---|---|---|
NULL | NULL | default | NULL | NULL |
NOT NULL | Ошибка | default | error | error |
Чтобы переименовать значение по умолчанию, используйте 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
sp_bindefault 'phonedflt', 'Person.PersonPhone.PhoneNumber';
См. также
Инструкция 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)