sp_bindefault (Transact-SQL)
Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstâ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 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 .
Convenções de sintaxe de Transact-SQL
Sintaxe
sp_bindefault
[ @defname = ] N'defname'
, [ @objname = ] N'objname'
[ , [ @futureonly = ] 'futureonly' ]
[ ; ]
Argumentos
@defname [ = ] N'defname'
O nome do padrão criado pelo CREATE DEFAULT
. @defname é nvarchar(776), sem padrão.
@objname [ = ] N'objname'
O nome da tabela e da coluna, ou o tipo de dados de alias, ao qual o padrão deve ser vinculado. @objname é nvarchar(776), sem padrão. @objname não pode ser definido com tipos definidos pelo usuário varchar(max), nvarchar(max), varbinary(max), xml ou CLR.
Se @objname 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 primeiro será resolvido como uma tabela e 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 alias herdam @defname, a menos que um padrão esteja vinculado diretamente à coluna. Um padrão não pode ser vinculado a uma coluna de tipo definido pelo usuário text, ntext, image, varchar(max), nvarchar(max), varbinary(max), xml, timestamp ou CLR, uma coluna com a IDENTITY
propriedade, uma coluna computada ou uma coluna que já tenha uma DEFAULT
restrição.
@objname pode conter colchetes ([
e ]
) como identificadores delimitados. Para obter mais informações, consulte Identificadores de banco de dados.
@futureonly [ = ] 'somente no futuro'
Usado somente ao vincular um padrão a um tipo de dados de alias. @futureonly é 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 for NULL
, o novo padrão será vinculado a quaisquer colunas do tipo de dados alias que atualmente não tenham padrão ou que estejam usando o padrão existente do tipo de dados alias.
Valores do código de retorno
0
(sucesso) ou 1
(falha).
Comentários
Você pode usar sp_bindefault
para vincular um novo padrão a uma coluna, embora o uso da DEFAULT
restrição seja preferível, ou a um tipo de dados de alias sem desvincular um padrão existente. O padrão antigo será substituído. Não é possível vincular um padrão a um tipo de dados do sistema do SQL Server ou a um tipo definido pelo usuário do CLR. Se o padrão não for compatível com a coluna à qual você o vinculou, o Mecanismo de Banco de Dados do SQL Server retornará uma mensagem de erro quando tentar inserir o valor padrão, não quando você vinculá-lo.
As colunas existentes do tipo de dados alias herdam o novo padrão, a menos que um padrão seja vinculado diretamente a elas ou futureonly seja especificado como futureonly
. As novas colunas do tipo de dados de alias sempre herdam o padrão.
Quando você vincula um padrão a uma coluna, as informações relacionadas são adicionadas à exibição de sys.columns
catálogo. Quando você vincula um padrão a um tipo de dados de alias, as informações relacionadas são adicionadas à exibição de sys.types
catálogo.
Permissões
O usuário deve possuir a tabela ou ser membro da função de servidor fixa sysadmin ou das funções de banco de dados db_owner e db_ddladmin fixas.
Exemplos
R. Vincular um padrão a uma coluna
Um nome today
padrão é definido no banco de dados atual usando CREATE DEFAULT
. O exemplo a seguir vincula o padrão à HireDate
coluna da Employee
tabela. Sempre que uma linha é adicionada à Employee
tabela e os HireDate
dados da coluna não são fornecidos, a coluna obtém o valor do padrão today
.
USE master;
GO
EXEC sp_bindefault 'today', 'HumanResources.Employee.HireDate';
B. Vincular 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ãodef_ssn
, a menos que futureonly
seja especificado para o valor @futureonly ou a coluna tenha um padrão vinculado diretamente a ele. Os padrões vinculados a colunas sempre têm precedência sobre os padrões vinculados a tipos de dados.
USE master;
GO
EXEC sp_bindefault 'def_ssn', 'ssn';
C. Use a futureonly
opção
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. Usar identificadores delimitados
O exemplo a seguir 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.
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.
Conteúdo relacionado
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de