Partilhar via


sp_bindefault (Transact-SQL)

Associa um padrão a uma coluna ou a um tipo de dados de alias.

Observação importanteImportante

Esse recurso será removido em uma versão futura de Microsoft SQL Server. Não utilize esse recurso em desenvolvimentos novos e planeje modificar, assim que possível, os aplicativos que atualmente o utilizam. Em vez disso, recomenda-se criar definições padrão usando a palavra-chave DEFAULT da instrução ALTER TABLE ou CREATE TABLE. Para obter mais informações, consulte Criando e modificando definições DEFAULT.

Ícone de vínculo de tópicoConvenções de sintaxe Transact-SQL

Sintaxe

sp_bindefault [ @defname = ] 'default' , 
    [ @objname = ] 'object_name' 
    [ , [ @futureonly = ] 'futureonly_flag' ] 

Argumentos

  • [ [ @defname= ] 'default'
    É o nome do padrão criado por CREATE DEFAULT. default é nvarchar(776), sem padrão.

  • [ [ @objname= ] 'object_name'
    É o nome da tabela e da coluna ou o tipo de dados do alias ao qual o padrão será associado. object_name é nvarchar(776) sem padrão. object_name não pode ser definido com o varchar(max), nvarchar(max), varbinary(max), xml nem com o tipo de dado CLR definido pelo usuário.

    Se object_name for um nome composto de uma parte, ele será resolvido como um tipo de dados de alias. Se for um nome composto de duas ou três partes, primeiro será resolvido como uma tabela e coluna e, se essa resolução falhar, será resolvido como um tipo de dados de alias. Por padrão, as colunas existentes do tipo de dados de alias herdam default, a menos que um padrão tenha sido associado diretamente à coluna. Um padrão não pode ser associado a text, ntext, image, varchar(max), nvarchar(max), varbinary(max), xml, timestamp nem com o tipo de dado CLR definido pelo usuário, uma coluna com a propriedade IDENTITY, uma coluna computada ou uma coluna que já tenha uma restrição DEFAULT.

    ObservaçãoObservação

    object_name pode conter colchetes [ ] como identificadores delimitados. Para obter mais informações, consulte Identificadores delimitados (Mecanismo de Banco de Dados).

  • [ [ @futureonly= ] 'futureonly_flag'
    É usado apenas ao associar um padrão a um tipo de dados de alias futureonly_flag é varchar(15) com um padrão NULL. Quando este parâmetro estiver definido como futureonly, as colunas existentes desse tipo de dados não poderão herdar o novo padrão. Este parâmetro nunca é usado ao associar um padrão a uma coluna. Se futureonly_flag for NULL, o novo padrão será associado a quaisquer colunas do tipo de dados de alias que atualmente não tenham padrão ou que estejam usando o padrão existente do tipo de dados de alias.

Valores de código de retorno

0 (êxito) ou 1 (falha)

Comentários

Você pode usar sp_bindefault para associar um novo padrão a uma coluna, embora o uso da restrição DEFAULT seja preferido, ou a um tipo de dados de alias sem remover a associação a um padrão existente. O padrão antigo será substituído. Você não pode associar um padrão a um tipo de dados de sistema do SQL Server ou a um tipo de dado CLR definido pelo usuário. Se o padrão não for compatível com a coluna à qual ele foi associado, o Mecanismo de Banco de Dados do SQL Server retornará uma mensagem de erro ao tentar inserir o valor padrão, não ao associá-lo.

As colunas existentes do tipo de dados de alias herdam o novo padrão, a menos que um padrão seja associado diretamente a elas ou que futureonly_flag seja especificado como futureonly. As novas colunas do tipo de dados de alias sempre herdam o padrão.

Quando você associa um padrão a uma coluna, as informações relacionadas são adicionadas à exibição de catálogo sys.columns. Quando você associa um padrão a um tipo de dados de alias, as informações relacionadas são adicionadas à exibição de catálogo sys.types.

Permissões

O usuário deve possuir a tabela, ser um membro da função de servidor fixa sysadmin ou das funções de banco de dados fixas db_owner e db_ddladmin.

Exemplos

A. Associando um padrão a uma coluna

Um padrão denominado today foi definido no banco de dados atual usando CREATE DEFAULT; o exemplo a seguir associa o padrão à coluna HireDate da tabela Employee. Sempre que uma linha for adicionada à tabela Employee e os dados da coluna HireDate não forem fornecidos, a coluna obterá o valor do padrão today.

USE master;
GO
EXEC sp_bindefault 'today', 'HumanResources.Employee.HireDate';

B. Associando um padrão a um tipo de dados de alias.

Já existem um padrão denominado def_ssn e um tipo de dados de alias denominado ssn. O exemplo a seguir associa o padrão def_ssn a ssn. Quando uma tabela for criada, o padrão será herdado por todas as colunas que tenham o tipo de dados de alias ssn designado. As colunas existentes do tipo ssn também herdam o padrão def_ssn, a menos que futureonly seja especificado para o valor futureonly_flag ou que a coluna tenha um padrão associado diretamente a ela. Os padrões associados a colunas sempre têm precedência aos associados a tipos de dados.

USE master;
GO
EXEC sp_bindefault 'def_ssn', 'ssn';

C. Usando futureonly_flag

O exemplo a seguir associa o padrão def_ssn ao tipo de dados de alias ssn. Como futureonly foi especificado, nenhuma coluna existente do tipo ssn será afetada.

USE master;
GO
EXEC sp_bindefault 'def_ssn', 'ssn', 'futureonly';

D. Usando identificadores delimitados

O exemplo a seguir mostra o uso de identificadores delimitados, [t.1], em object_name.

USE master;
GO
CREATE TABLE [t.1] (c1 int) 
-- Notice the period as part of the table name.
EXEC sp_bindefault 'default1', '[t.1].c1' 
-- The object contains two periods; 
-- the first is part of the table name, 
-- and the second distinguishes the table name from the column name.