Compartilhar via


CREATE DEFAULT (Transact-SQL)

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure

Cria um objeto chamado padrão. 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.

Importante

Esse recurso será removido em uma versão futura do SQL Server. Evite usar esse recurso em desenvolvimentos novos e planeje modificar os aplicativos que atualmente o utilizam. Em vez deles, use definições padrão criadas com a palavra-chave DEFAULT de ALTER TABLE ou CREATE TABLE.

Convenções de sintaxe de Transact-SQL

Sintaxe

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

Argumentos

schema_name
O nome do esquema ao qual o padrão pertence.

default_name
O nome do padrão. Os nomes padrão devem estar em conformidade com as regras de identificadores. Especificar o nome do proprietário do padrão é opcional.

constant_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). Você pode usar qualquer constante, função interna ou expressão matemática, menos aquelas que contêm tipos de dados de alias. As funções definidas pelo usuário não podem ser usadas. 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. Dados binários devem ser precedidos por 0x e dados monetários por um sinal de dólar ($). O valor padrão deve ser compatível com o tipo de dados de coluna.

Comentários

Só é possível criar um nome padrão no banco de dados atual. Dentro de um banco de dados, os nomes padrão devem ser exclusivos por esquema. Quando você criar um padrão, use sp_bindefault para associá-lo a uma coluna ou a um tipo de dados de alias.

Se o padrão não for compatível com a coluna à qual está associado, o SQL Server gerará uma mensagem de erro ao tentar inserir o valor padrão. Por exemplo, N/D não pode ser usado como padrão para uma coluna numeric.

Se o valor padrão for muito longo para a coluna à qual está associado, ele será truncado.

As instruções CREATE DEFAULT não podem ser combinadas com outras instruções Transact-SQL em um único lote.

Um padrão deve ser descartado para que um novo com o mesmo nome seja criado. E o padrão deve ser desassociado executando sp_unbindefault antes de ser descartado.

Se uma coluna tiver um padrão e uma regra associado a ele, o valor do padrão não deve violar a regra. Um padrão que entra em conflito com uma regra nunca é inserido, e o SQL Server gera uma mensagem de erro sempre que tenta inseri-lo.

Ao ser associado a uma coluna, um valor padrão é inserido quando:

  • Um valor não é inserido explicitamente.

  • As palavras-DEFAULT VALUES ou DEFAULT são usadas com INSERT para inserir valores padrão.

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. 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. As entradas na tabela mostram o resultado.

Definição da coluna Nenhuma entrada, nenhum padrão Nenhuma entrada, padrão Insere NULL, nenhum padrão Insere NULL, padrão
NULL NULO default NULO NULO
NOT NULL Erro default erro error

Para renomear um padrão, use sp_rename. Para obter um relatório sobre um padrão, use sp_help.

Permissões

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.

Exemplos

a. Criando um padrão de caractere simples

O exemplo a seguir cria um padrão de caractere chamado unknown.

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

B. Associando um padrão

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.

Observação

Omitir qualquer entrada é diferente de declarar NULL explicitamente em uma instrução INSERT.

Como não existe um padrão chamado phonedflt, a instrução Transact-SQL a seguir gera uma falha. Este exemplo é apenas uma ilustração.

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

Consulte Também

ALTER TABLE (Transact-SQL)
CREATE RULE (Transact-SQL)
CREATE TABLE (Transact-SQL)
DROP DEFAULT (Transact-SQL)
DROP RULE (Transact-SQL)
Expressões (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)