CREATE DEFAULT (Transact-SQL)
Создает объект «Значение по умолчанию». Если этот объект привязан к столбцу или типу данных псевдонима, он указывает значение, которое должно вставляться в столбец (или во все столбцы в случае типа данных псевдонима), если при вставке значение не задано явно.
Важно! |
---|
В будущей версии Microsoft SQL Server эта возможность будет удалена. Избегайте использования этой возможности в новых разработках и запланируйте изменение существующих приложений, в которых она применяется. Взамен используйте определения значений по умолчанию, созданные с помощью ключевого слова DEFAULT инструкций ALTER TABLE и CREATE TABLE. Дополнительные сведения см. в разделе Изменение и создание определений DEFAULT. |
Синтаксис
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 |
ошибка |
значение по умолчанию |
ошибка |
ошибка |
Чтобы переименовать значение по умолчанию, используйте процедуру sp_rename. Чтобы получить отчет о значении по умолчанию, используйте процедуру sp_help.
Разрешения
Чтобы вызвать команду CREATE DEFAULT, пользователь должен обладать разрешением CREATE DEFAULT в текущей базе данных и разрешением ALTER на схему, в которой создается значение по умолчанию.
Примеры
А. Создание простого символьного значения по умолчанию
В следующем примере создается символьное значение по умолчанию с именем unknown.
USE AdventureWorks2008R2;
GO
CREATE DEFAULT phonedflt AS 'unknown';
Б. Привязка значения по умолчанию
При выполнении следующего примера производится привязка созданного в примере A значения по умолчанию. Значение по умолчанию используется в случае, когда в столбце Phone таблицы Contact нет записи. Обратите внимание, что пропуск записи отличается от явного указания значения NULL в инструкции INSERT.
Выполнение следующей инструкции Transact-SQL заканчивается сбоем, так как не существует значения по умолчанию phonedflt. Данный пример служит только для демонстрационных целей.
USE AdventureWorks2008R2;
GO
sp_bindefault 'phonedflt', 'Person.PersonPhone.PhoneNumber';
См. также