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

ESTE TÓPICO APLICA-SE A:simSQL Server (a partir de 2008)simBanco de Dados SQL do Microsoft AzurenãoAzure SQL Data Warehouse nãoParallel Data Warehouse THIS TOPIC APPLIES TO:yesSQL Server (starting with 2008)yesAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

Cria um objeto chamado padrão.Creates an object called a default. Quando associado a uma coluna ou um tipo de dados de alias, um padrão especifica um valor a ser inserido na coluna á qual o objeto está associado (ou em todas as colunas, no caso de um tipo de dados de alias), quando nenhum valor é fornecido explicitamente durante uma inserção.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, in the case of an alias data type), when no value is explicitly supplied during an insert.

Importante

Esse recurso será removido em uma versão futura do Microsoft SQL Server.This feature will be removed in a future version of Microsoft SQL Server. Evite usar esse recurso em desenvolvimentos novos e planeje modificar os aplicativos que atualmente o utilizam.Avoid using this feature in new development work, and plan to modify applications that currently use this feature. Em vez dela, use definições padrão criadas usando a palavra-chave DEFAULT de ALTER TABLE ou CREATE TABLE. Instead, use default definitions created using the DEFAULT keyword of ALTER TABLE or CREATE TABLE.

Ícone de link do tópico Convenções de sintaxe de Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintaxeSyntax


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

ArgumentosArguments

schema_nameschema_name
É o nome do esquema ao qual o padrão pertence.Is the name of the schema to which the default belongs.

default_namedefault_name
É o nome do padrão.Is the name of the default. Os nomes padrão devem estar em conformidade com as regras de identificadores.Default names must conform to the rules for identifiers. Especificar o nome do proprietário do padrão é opcional.Specifying the default owner name is optional.

constant_expressionconstant_expression
É uma expression que contém somente valores constantes (não pode incluir os nomes de nenhuma coluna ou outros objetos de banco de dados).Is an expression that contains only constant values (it cannot include the names of any columns or other database objects). Podem ser usadas qualquer constante, função interna ou expressão matemática, menos aquelas que contêm tipos de dados de alias.Any constant, built-in function, or mathematical expression can be used, except those that contain alias data types. Funções definidas pelo usuário não podem ser usadas.User-defined functions cannot be used.. Coloque constantes de caractere e de data entre aspas simples ('); constantes monetárias, de inteiro e de ponto flutuante não exigem aspas.Enclose character and date constants in single quotation marks ('); monetary, integer, and floating-point constants do not require quotation marks. Dados binários devem ser precedidos por 0x e dados monetários por um sinal de dólar ($).Binary data must be preceded by 0x, and monetary data must be preceded by a dollar sign ($). O valor padrão deve ser compatível com o tipo de dados de coluna.The default value must be compatible with the column data type.

RemarksRemarks

Um nome padrão pode ser criado somente no banco de dados atual.A default name can be created only in the current database. Dentro de um banco de dados, os nomes padrão devem ser exclusivos por esquema.Within a database, default names must be unique by schema. Quando um padrão for criado, use sp_bindefault para associá-lo a uma coluna ou a um tipo de dados de alias.When a default is created, use sp_bindefault to bind it to a column or to an alias data type.

Se o padrão não for compatível com a coluna à qual está associado, o SQL ServerSQL Server gerará uma mensagem de erro ao tentar inserir o valor padrão.If the default is not compatible with the column to which it is bound, SQL ServerSQL Server generates an error message when trying to insert the default value. Por exemplo, N/A não pode ser usado como padrão para uma coluna numeric.For example, N/A cannot be used as a default for a numeric column.

Se o valor padrão for muito longo para a coluna à qual está associado, ele será truncado.If the default value is too long for the column to which it is bound, the value is truncated.

Instruções CREATE DEFAULT não podem ser combinadas com outras instruções Transact-SQLTransact-SQL em um único lote.CREATE DEFAULT statements cannot be combined with other Transact-SQLTransact-SQL statements in a single batch.

Um padrão deve ser removido antes da criação de um novo com o mesmo nome, mas primeiro sua associação deve ser desfeita com a execução de sp_unbindefault.A default must be dropped before creating a new one of the same name, and the default must be unbound by executing sp_unbindefault before it is dropped.

Se uma coluna tiver um padrão e uma regra associado a ele, o valor do padrão não deve violar a regra.If a column has both a default and a rule associated with it, the default value must not violate the rule. Um padrão que entra em conflito com uma regra nunca é inserido, e o SQL ServerSQL Server gera uma mensagem de erro sempre que tenta inseri-lo.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.

Ao ser associado a uma coluna, um valor padrão é inserido quando:When bound to a column, a default value is inserted when:

  • Um valor não é inserido explicitamente.A value is not explicitly inserted.

  • As palavras-DEFAULT VALUES ou DEFAULT são usadas com INSERT para inserir valores padrão.Either the DEFAULT VALUES or DEFAULT keywords are used with INSERT to insert default values.

    Se NOT NULL for especificado ao criar uma coluna e um padrão não for criado para ela, uma mensagem de erro será gerada quando um usuário não fizer uma entrada nessa coluna.If NOT NULL is specified when creating a column and a default is not created for it, an error message is generated when a user fails to make an entry in that column. A tabela a seguir ilustra o relacionamento entre a existência de um padrão e a definição de uma coluna como NULL ou 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. As entradas na tabela mostram o resultado.The entries in the table show the result.

Definição da colunaColumn definition Nenhuma entrada, nenhum padrãoNo entry, no default Nenhuma entrada, padrãoNo entry, default Insere NULL, nenhum padrãoEnter NULL, no default Insere NULL, padrãoEnter NULL, default
NULLNULL NULLNULL padrãodefault NULLNULL NULLNULL
NOT NULLNOT NULL ErroError padrãodefault erroerror erroerror

Para renomear um padrão, use sp_rename.To rename a default, use sp_rename. Para obter um relatório sobre um padrão, use sp_help.For a report on a default, use sp_help.

PermissõesPermissions

Para executar CREATE DEFAULT, no mínimo, um usuário deve ter a permissão CREATE DEFAULT no banco de dados atual e a permissão ALTER no esquema no qual o padrão está sendo criado.To execute 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.

ExemplosExamples

A.A. Criando um padrão de caractere simplesCreating a simple character default

O exemplo a seguir cria um padrão de caractere chamado unknown.The following example creates a character default called unknown.

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

B.B. Associando um padrãoBinding a default

O exemplo a seguir associa o padrão criado no exemplo A. O padrão entra em vigor somente se nenhuma entrada for especificada para a coluna Phone da tabela 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. Observe que omitir qualquer entrada é diferente de declarar NULL explicitamente em uma instrução INSERT.Note that omitting any entry is different from explicitly stating NULL in an INSERT statement.

Como não existe um padrão chamado phonedflt, a instrução Transact-SQLTransact-SQL a seguir gera uma falha.Because a default named phonedflt does not exist, the following Transact-SQLTransact-SQL statement fails. Este exemplo é apenas uma ilustração.This example is for illustration only.

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

Consulte TambémSee 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)
Expressões (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)