CREATE DEFAULT (Transact-SQL)CREATE DEFAULT (Transact-SQL)

ОБЛАСТЬ ПРИМЕНЕНИЯ: даSQL Server даБаза данных SQL Azure нетAzure Synapse Analytics (хранилище данных SQL) нетParallel Data WarehouseAPPLIES TO: yesSQL Server yesAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

Создает объект «Значение по умолчанию».Creates an object called a default. Если этот объект привязан к столбцу или псевдониму типа данных, он указывает значение, которое должно вставляться в столбец (или во все столбцы псевдонима типа данных), если при вставке значение не задано явно.When bound to a column or an alias data type, a default specifies a value to be inserted into the column to which the object is bound (or into all columns, if of an alias data type), when no value is explicitly supplied during an insert.

Важно!

Этот компонент находится в режиме обслуживания и может быть удален в будущей версии Microsoft SQL Server.This feature is in maintenance mode and may be removed in a future version of Microsoft SQL Server. Избегайте использования этого компонента в новых разработках и запланируйте изменение существующих приложений, в которых он применяется.Avoid using this feature in new development work, and plan to modify applications that currently use this feature. Вместо этого используйте определения по умолчанию, создаваемые с помощью ключевого слова DEFAULT инструкций ALTER TABLE и CREATE TABLE.Instead, use default definitions created using the DEFAULT keyword of ALTER TABLE or CREATE TABLE.

Значок ссылки на раздел Синтаксические обозначения в Transact-SQLTopic link icon Transact-SQL Syntax Conventions

СинтаксисSyntax

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

АргументыArguments

schema_nameschema_name
Имя схемы, которой принадлежит значение по умолчанию.The name of the schema to which the default belongs.

default_namedefault_name
Имя значения по умолчанию.The name of the default. Имена значений по умолчанию должны соответствовать правилам для идентификаторов.Default names must conform to the rules for identifiers. Указывать имя владельца по умолчанию не обязательно.Specifying the default owner name is optional.

constant_expressionconstant_expression
Выражение, содержащее только постоянные значения (не может включать имена столбцов или других объектов баз данных).An expression that contains only constant values (it can't include the names of any columns or other database objects). Вы можете использовать любые константы, встроенные функции или математические выражения, за исключением тех, которые содержат типы данных псевдонимов.You can use any constant, built-in function, or mathematical expression, except ones that contain alias data types. Определяемые пользователем функции нельзя использовать.User-defined functions can't be used. Константы символьного типа и даты необходимо заключать в одинарные кавычки ( ' ). Константы, имеющие тип денежных данных, а также целочисленные и с плавающей точкой в кавычки не заключаются.Enclose character and date constants in single quotation marks ('); monetary, integer, and floating-point constants don't require quotation marks. Двоичные данные должны сопровождаться знаком 0x, а денежные данные — знаком доллара ($).Binary data must be preceded by 0x, and monetary data must be preceded by a dollar sign ($). Тип значения по умолчанию должен соответствовать типу данных столбца.The default value must be compatible with the column data type.

RemarksRemarks

Имя по умолчанию может быть создано только в текущей базе данных.You can only create a default name in the current database. Внутри базы данных имена по умолчанию должны быть уникальны в схеме.Within a database, default names must be unique by schema. Чтобы созданное значение по умолчанию привязать к типу данных столбца или псевдонима, используйте sp_bindefault.When you create a default, use sp_bindefault to bind it to a column or to an alias data type.

Если значение по умолчанию не совместимо со столбцом, к которому оно привязывается, то при попытке его вставки в столбец SQL ServerSQL Server формирует сообщение об ошибке.If the default isn't compatible with the column to which it's bound, SQL ServerSQL Server generates an error message when trying to insert the default value. Например, значение N/A не может быть использовано по умолчанию для столбца, содержащего числовые данные.For example, N/A can't be used as a default for a numeric column.

Если значение является слишком длинным для столбца, к которому оно привязывается, то происходит его усечение.If the default value is too long for the column to which it's bound, the value is truncated.

Инструкции CREATE DEFAULT не могут использоваться в одном пакете с другими инструкциями Transact-SQLTransact-SQL.CREATE DEFAULT statements can't be combined with other Transact-SQLTransact-SQL statements in a single batch.

Перед созданием нового значения по умолчанию необходимо удалить старое значение с таким же именем,A default must be dropped before creating a new one of the same name. предварительно удалив все его связи с помощью sp_unbindefault.And, the default must be unbound by executing sp_unbindefault before it's dropped.

Каждому столбцу соответствуют значение по умолчанию и связанное с ним правило, причем значение по умолчанию должно соответствовать правилу.If a column has both a default and a rule associated with it, the default value must not violate the rule. Значение по умолчанию, не удовлетворяющее правилу, не будет вставлено, а SQL ServerSQL Server будет выдавать ошибку при каждой попытке подобной вставки.A default that conflicts with a rule is never inserted, and SQL ServerSQL Server generates an error message each time it attempts to insert the default.

При привязке к столбцу значение по умолчанию вставляется при следующих условиях.When bound to a column, a default value is inserted when:

  • Значение вставляется неявным образом.A value isn't explicitly inserted.

  • При выполнении функции INSERT для вставки значений по умолчанию используются ключевые слова DEFAULT VALUES или DEFAULT.Either the DEFAULT VALUES or DEFAULT keywords are used with INSERT to insert default values.

Если при создании столбца было указано NOT NULL и не были созданы значения по умолчанию, то при попытке записи в данный столбец будет выдаваться сообщение об ошибке.If you specify NOT NULL when creating a column and you don't create a default for it, an error message generates when a user fails to make an entry in that column. В следующей таблице представлена связь между фактом существования значения по умолчанию и определением столбца как NULL или NOT NULL.The following table illustrates the relationship between the existence of a default and the definition of a column as NULL or NOT NULL. Записи таблицы отображают результаты.The entries in the table show the result.

Определение столбцаColumn definition Нет записи, значение по умолчанию отсутствуетNo entry, no default Нет записи, присвоено значение по умолчаниюNo entry, default Введено NULL, значение по умолчанию отсутствуетEnter NULL, no default Введено NULL, значение по умолчаниюEnter NULL, default
NULLNULL NULLNULL значение по умолчаниюdefault NULLNULL NULLNULL
NOT NULLNOT NULL ОшибкаError значение по умолчаниюdefault ошибкаerror ошибкаerror

Чтобы переименовать значение по умолчанию, используйте sp_rename.To rename a default, use sp_rename. Чтобы получить отчет о значении по умолчанию, используйте sp_help.For a report on a default, use sp_help.

РазрешенияPermissions

Чтобы использовать команду CREATE DEFAULT, пользователь должен обладать разрешением CREATE DEFAULT в текущей базе данных и разрешением ALTER на схему, в которой создается значение по умолчанию.To use CREATE DEFAULT, at a minimum, a user must have CREATE DEFAULT permission in the current database and ALTER permission on the schema in which the default is being created.

ПримерыExamples

A.A. Создание простого символьного значения по умолчаниюCreating a simple character default

В следующем примере создается символьное значение по умолчанию с именем unknown.The following example creates a character default called unknown.

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

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

При выполнении следующего примера производится привязка созданного в примере A значения по умолчанию. Значение по умолчанию используется в случае, когда в столбце Phone таблицы Contact нет записи.The following example binds the default created in example A. The default takes effect only if no entry is specified for the Phone column of the Contact table.

Примечание

Пропуск записи отличается от явного указания значения NULL в инструкции INSERT.Omitting any entry is different from explicitly stating NULL in an INSERT statement.

Выполнение следующей инструкции Transact-SQLTransact-SQL заканчивается сбоем, так как не существует значения по умолчанию phonedflt.Because a default named phonedflt doesn't exist, the following Transact-SQLTransact-SQL statement fails. Данный пример служит только для демонстрационных целей.This example is for illustration only.

USE AdventureWorks2012;  
GO  
sp_bindefault 'phonedflt', 'Person.PersonPhone.PhoneNumber';  

См. также:See Also

ALTER TABLE (Transact-SQL) ALTER TABLE (Transact-SQL)
CREATE RULE (Transact-SQL) CREATE RULE (Transact-SQL)
CREATE TABLE (Transact-SQL) CREATE TABLE (Transact-SQL)
DROP DEFAULT (Transact-SQL) DROP DEFAULT (Transact-SQL)
DROP RULE (Transact-SQL) DROP RULE (Transact-SQL)
Выражения (Transact-SQL) Expressions (Transact-SQL)
INSERT (Transact-SQL) INSERT (Transact-SQL)
sp_bindefault (Transact-SQL) sp_bindefault (Transact-SQL)
sp_help (Transact-SQL) sp_help (Transact-SQL)
sp_helptext (Transact-SQL) sp_helptext (Transact-SQL)
sp_rename (Transact-SQL) sp_rename (Transact-SQL)
sp_unbindefault (Transact-SQL)sp_unbindefault (Transact-SQL)