Partilhar via


sp_bindefault (Transact-SQL)

Aplica-se a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBase de dados SQL no Microsoft Fabric

Atribui um padrão a uma coluna ou a um tipo de dado de alias.

Importante

Esse recurso será removido em uma versão futura do SQL Server. Evite usar esse recurso em novos trabalhos de desenvolvimento e planeje modificar aplicativos que atualmente usam esse recurso. Recomendamos que crie definições padrão utilizando a palavra-chave DEFAULT das instruções ALTER TABLE ou CREATE TABLE.

Transact-SQL convenções de sintaxe

Sintaxe

sp_bindefault
    [ @defname = ] N'defname'
    , [ @objname = ] N'objname'
    [ , [ @futureonly = ] 'futureonly' ]
[ ; ]

Arguments

[ @defname = ] N'defname'

O nome do padrão criado por CREATE DEFAULT. @defname é nvarchar(776), sem padrão.

[ @objname = ] N'objname'

O nome da tabela e coluna, ou o tipo de dado de alias, ao qual o padrão deve ser atribuído. @objname é nvarchar(776), sem padrão. @objname não podem ser definidos com tipos definidos pelo utilizador varchar(max), nvarchar(max), varbinary(max), XML ou CLR.

Se @objname for um nome de uma só parte, resolve-se como um tipo de dado de alias. Se for um nome dividido em duas ou três partes, primeiro resolve-se como tabela e coluna; e se esta resolução falhar, resolve-se como um tipo de dado alias. Por defeito, as colunas existentes do tipo de dado alias herdam @defname, a menos que um padrão esteja diretamente ligado à coluna. Um padrão não pode ser atribuído a uma coluna de tipo definido pelo utilizador de texto, ntext, imagem, varchar(max), nvarchar(max), varbinary(max), xml, carimbo temporal ou CLR definido pelo utilizador, uma coluna com a IDENTITY propriedade, uma coluna computada, ou uma coluna que já tenha uma DEFAULT restrição.

@objname podem conter parênteses ([ e ]) como identificadores delimitados. Para obter mais informações, consulte Identificadores de banco de dados.

[ @futureonly = ] 'Futuros-Only'

Usado apenas quando se atribui um padrão a um tipo de dado de alias. @futureonly é varchar(15), com um padrão de NULL. Quando este parâmetro está definido para futureonly, as colunas existentes desse tipo de dado não podem herdar o novo padrão. Este parâmetro nunca é usado ao atribuir um padrão a uma coluna. Se @futureonly for NULL, o novo padrão está vinculado a quaisquer colunas do tipo de dado de alias que atualmente não tenham padrão ou que estejam a usar o padrão existente do tipo de dado de alias.

Valores de código de retorno

0 (sucesso) ou 1 (fracasso).

Observações

Pode usar sp_bindefault para associar um novo padrão a uma coluna, embora usar a DEFAULT restrição seja preferível, ou a um tipo de dado de alias sem desvincular um padrão existente. O antigo padrão é anulado. Não se pode atribuir um padrão a um tipo de sistema SQL Server ou a um CLR definido pelo utilizador. Se o padrão não for compatível com a coluna a que o atribuiu, o Motor de Base de Dados do SQL Server devolve uma mensagem de erro quando tenta inserir o valor predefinido, não quando o atribui.

As colunas existentes do tipo de dado alias herdam o novo padrão, a menos que um padrão esteja diretamente vinculado a elas ou que o futureonly seja especificado como futureonly. Novas colunas do tipo de dado alias herdam sempre o predefinido.

Quando associa um padrão a uma coluna, a informação relacionada é adicionada à sys.columns vista de catálogo. Quando associa um predefinido a um tipo de dado de alias, a informação relacionada é adicionada à sys.types vista de catálogo.

Permissions

O utilizador deve possuir a tabela, ou ser membro do papel fixo de servidor sysadmin , ou os papéis db_owner e db_ddladmin de base de dados fixos.

Examples

A. Atribuir um padrão a uma coluna

Um nome today padrão é definido na base de dados atual usando CREATE DEFAULT. O exemplo seguinte atribui o padrão à HireDate coluna da Employee tabela. Sempre que uma linha é adicionada à Employee tabela e os dados da HireDate coluna não são fornecidos, a coluna recebe o valor do padrão today.

USE master;
GO

EXECUTE sp_bindefault 'today', 'HumanResources.Employee.HireDate';

B. Associe um padrão a um tipo de dado de alias

Já existe um tipo de dado predefinido nomeado def_ssn e um tipo de dado alias nomeado ssn . O exemplo seguinte atribui o padrão def_ssn a ssn. Quando uma tabela é criada, o padrão é herdado por todas as colunas atribuídas ao tipo ssnde dado alias . Colunas existentes do tipo ssn também herdam o padrão def_ssn, a menos que futureonly seja especificado para o valor @futureonly , ou a coluna tenha um padrão diretamente limitado. Os padrões atribuídos a colunas têm sempre prioridade sobre os valores atribuídos a tipos de dados.

USE master;
GO

EXECUTE sp_bindefault 'def_ssn', 'ssn';

C. Use a futureonly opção

O exemplo seguinte atribui o predefinido def_ssn ao tipo ssnde dado de alias . Como futureonly está especificado, nenhuma coluna existente do tipo ssn é afetada.

USE master;
GO

EXECUTE sp_bindefault 'def_ssn', 'ssn', 'futureonly';

D. Usar identificadores delimitados

O exemplo seguinte mostra o uso de identificadores delimitados, [t.1], em @objname.

USE master;
GO

CREATE TABLE [t.1] (c1 INT);

-- Notice the period as part of the table name.
EXECUTE 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.