sp_bindefault (Transact-SQL)

Aplica-se a: SQL Server (todas as versões com suporte) SQL do Azure Banco de Dados Instância Gerenciada de SQL do Azure

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

Importante

Esse recurso será removido em uma versão futura do Microsoft SQL Server. Evite usar esse recurso em desenvolvimentos novos e planeje modificar os aplicativos que atualmente o utilizam. Recomendamos que você crie definições padrão usando a palavra-chave DEFAULT das instruções ALTER TABLE ou CREATE TABLE .

Topic link iconConvenções de sintaxe do 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. o padrão é nvarchar(776), sem padrão.

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

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

Observação

object_name pode conter colchetes [] como identificadores delimitados. Para obter mais informações, consulte Database Identifiers.

[ @futureonly = ] 'futureonly_flag' É usado somente ao associar um padrão a um tipo de dados de alias. futureonly_flag é varchar(15) com um padrão de NULL. Quando esse parâmetro é definido como futureonly, as colunas existentes desse tipo de dados não podem 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 têm nenhum padrão ou que estejam usando o padrão existente do tipo de dados de alias.

Valores do 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 preferencial, ou a um tipo de dados de alias sem desassociar um padrão existente. O padrão antigo será substituído. Você não pode associar um padrão a um tipo de dados do sistema SQL Server ou a um tipo definido pelo usuário clr. Se o padrão não for compatível com a coluna à qual você a vinculou, o mecanismo de banco de dados SQL Server retornará uma mensagem de erro quando tentar inserir o valor padrão, não quando você a associa.

As colunas existentes do tipo de dados de alias herdam o novo padrão, a menos que um padrão esteja associado diretamente a elas ou 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 ou ser um membro da função de servidor fixa sysadmin ou as 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 def_ssn padrão, a menos que futureonly seja especificado para futureonly_flag valor, ou a menos que a coluna tenha um limite padrão 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 o futureonly_flag

O exemplo a seguir associa o padrão def_ssn ao tipo de dados de alias ssn. Como futureonly é especificado, nenhuma coluna de tipo ssn existente é 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.  

Consulte Também

Procedimentos armazenados do Mecanismo de Banco de Dados (Transact-SQL)
CREATE DEFAULT (Transact-SQL)
DROP DEFAULT (Transact-SQL)
sp_unbindefault (Transact-SQL)
Procedimentos armazenados do sistema (Transact-SQL)