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

APLICA-SE A: simSQL Server simBanco de Dados SQL do Azure nãoSQL Data Warehouse do Azure nãoParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

Cria um objeto chamado padrão.Creates an object called a default. Quando associado a uma coluna ou a 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, if of an alias data type), when no value is explicitly supplied during an insert.

Importante

Este recurso está em modo de manutenção e talvez seja removido em uma versão futura do Microsoft SQL Server.This feature is in maintenance mode and may 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.The name of the schema to which the default belongs.

default_namedefault_name
O nome do padrão.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).An expression that contains only constant values (it can't include the names of any columns or other database objects). Você pode usar qualquer constante, função interna ou expressão matemática, menos aquelas que contêm tipos de dados de alias.You can use any constant, built-in function, or mathematical expression, except ones that contain alias data types. As funções definidas pelo usuário não podem ser usadas.User-defined functions can't be used. Coloque as constantes de caractere e de data entre aspas simples ( ' ); as 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 don't 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

Só é possível criar um nome padrão no banco de dados atual.You can only create a default name 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 você criar um padrão, use sp_bindefault para associá-lo a uma coluna ou a um tipo de dados de alias.When you create a default, 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 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. Por exemplo, N/D não pode ser usado como padrão para uma coluna numeric.For example, N/A can't 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's bound, the value is truncated.

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

Um padrão deve ser descartado para que um novo com o mesmo nome seja criado.A default must be dropped before creating a new one of the same name. E o padrão deve ser desassociado executando sp_unbindefault antes de ser descartado.And, the default must be unbound by executing sp_unbindefault before it's 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 isn't 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 você especificar NOT NULL ao criar uma coluna e não criar um padrão para ela, uma mensagem de erro será gerada quando um usuário não fizer uma entrada nessa coluna.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. 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 usar 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 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.

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.

Observação

Omitir qualquer entrada é diferente de declarar NULL explicitamente em uma instrução INSERT.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 doesn't 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)