sp_bindrule (Transact-SQL)sp_bindrule (Transact-SQL)

APLICA-SE A: simSQL Server simBanco de Dados SQL do Azure SQL nãoAzure Synapse Analytics (SQL DW) nãoData Warehouse Paralelo APPLIES TO: yesSQL Server yesAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

Associa uma regra a uma coluna ou a um tipo de dados de alias.Binds a rule to a column or to an alias data type.

Importante

Esse recurso será removido em uma versão futura do Microsoft SQL Server.This feature will be removed in a future version of Microsoft SQL Server. Não utilize esse recurso em desenvolvimentos novos e modifique, assim que possível, os aplicativos que atualmente o utilizam.Do not use this feature in new development work, and modify applications that currently use this feature as soon as possible. UseUnique Constraints and Check Constraints em vez disso.UseUnique Constraints and Check Constraints instead. Restrições CHECK são criadas usando a palavra-chave CHECK do CREATE TABLE ou ALTER TABLE instruções.CHECK constraints are created by using the CHECK keyword of the CREATE TABLE or ALTER TABLE statements.

Ícone de link do tópico Convenções de sintaxe de Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintaxeSyntax

  
sp_bindrule [ @rulename = ] 'rule' ,   
     [ @objname = ] 'object_name'   
     [ , [ @futureonly = ] 'futureonly_flag' ]   

ArgumentosArguments

[ @rulename = ] 'rule' É o nome de uma regra criada pela instrução CREATE RULE.[ @rulename = ] 'rule' Is the name of a rule created by the CREATE RULE statement. regra está nvarchar(776) , sem padrão.rule is nvarchar(776), with no default.

[ @objname = ] 'object_name' É a tabela e coluna ou o tipo de dados do alias ao qual a regra deve ser associado.[ @objname = ] 'object_name' Is the table and column, or the alias data type to which the rule is to be bound. Uma regra não pode ser associada a um text, ntext, image, varchar(max) , nvarchar(max) , varbinary(max) , xml, tipo de dado CLR definido pelo usuário ou uma coluna timestamp.A rule cannot be bound to a text, ntext, image, varchar(max), nvarchar(max), varbinary(max), xml, CLR user-defined type, or timestampcolumn. A regra não pode ser associada a uma coluna computada.A rule cannot be bound to a computed column.

object_name está nvarchar(776) sem nenhum padrão.object_name is nvarchar(776) with no default. Se object_name é um nome de uma parte, ele será resolvido como um tipo de dados de alias.If object_name is a one-part name, it is resolved as an alias data type. 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.If it is a two- or three-part name, it is first resolved as a table and column; if this resolution fails, it is resolved as an alias data type. Por padrão, as colunas existentes do tipo de dados de alias herdam regra , a menos que uma regra foi associada diretamente à coluna.By default, existing columns of the alias data type inherit rule unless a rule has been bound directly to the column.

Observação

object_name pode conter o colchete [ e ] caracteres como caracteres de identificador delimitado.object_name can contain the bracket [ and ] characters as delimited identifier characters. Para obter mais informações, consulte Database Identifiers.For more information, see Database Identifiers.

Observação

As regras criadas em expressões que usam tipos de dados de alias podem ser associadas colunas ou a tipos de dados de alias, mas falham ao compilar quando são referenciadas.Rules created on expressions that use alias data types can be bound to columns or alias data types, but fail to compile when they are referenced. Evite usar regras criadas em tipos de dados de alias.Avoid using rules created on alias data types.

[ @futureonly = ] 'futureonly_flag' É usado somente quando uma regra de associação a um tipo de dados de alias.[ @futureonly = ] 'futureonly_flag' Is used only when binding a rule to an alias data type. future_only_flag está varchar(15) com um padrão NULL.future_only_flag is varchar(15) with a default of NULL. Esse parâmetro quando definido como futureonly impede que as colunas existentes de um tipo de dados de alias herdem a nova regra.This parameter when set to futureonly prevents existing columns of an alias data type from inheriting the new rule. Se futureonly_flag for NULL, a nova regra é associada a quaisquer colunas do tipo de dados de alias que atualmente não tenham regra ou que estejam usando a regra existente do tipo de dados de alias.If futureonly_flag is NULL, the new rule is bound to any columns of the alias data type that currently have no rule or that are using the existing rule of the alias data type.

Valores do código de retornoReturn Code Values

0 (êxito) ou 1 (falha)0 (success) or 1 (failure)

ComentáriosRemarks

Você pode associar uma nova regra a uma coluna (embora o uso de uma restrição de verificação é preferível) ou a um tipo de dados de alias com sp_bindrule sem desassociar uma regra existente.You can bind a new rule to a column (although using a CHECK constraint is preferred) or to an alias data type with sp_bindrule without unbinding an existing rule. A regra antiga é substituída.The old rule is overridden. Se uma regra for associada a uma coluna com uma restrição CHECK existente, todas as restrições serão avaliadas.If a rule is bound to a column with an existing CHECK constraint, all restrictions are evaluated. Não é possível associar uma regra a um tipo de dados do SQL ServerSQL Server.You cannot bind a rule to a SQL ServerSQL Server data type.

A regra é imposta quando uma instrução INSERT é usada, mas não na associação.The rule is enforced when an INSERT statement is tried, not at binding. Você pode associar uma regra de caracteres para uma coluna de numéricos de tipo de dados, embora essa operação INSERT não é válida.You can bind a character rule to a column of numeric data type, although such an INSERT operation is not valid.

As colunas existentes do tipo de dados de alias herdam a nova regra, a menos que futureonly_flag é especificado como futureonly.Existing columns of the alias data type inherit the new rule unless futureonly_flag is specified as futureonly. As novas colunas definidas com o tipo de dados de alias sempre herdam a regra.New columns defined with the alias data type always inherit the rule. Entretanto, se a cláusula ALTER COLUMN de uma instrução ALTER TABLE alterar o tipo de dados de uma coluna para um tipo de dados de alias associado a uma regra, a regra associada ao tipo de dados não será herdada pela coluna.However, if the ALTER COLUMN clause of an ALTER TABLE statement changes the data type of a column to an alias data type bound to a rule, the rule bound to the data type is not inherited by the column. A regra deve ser associada especificamente à coluna usando sp_bindrule.The rule must be specifically bound to the column by using sp_bindrule.

Quando você associa uma regra a uma coluna, as informações relacionadas são adicionadas para o sys. Columns tabela.When you bind a rule to a column, related information is added to the sys.columns table. Quando você associa uma regra a um tipo de dados de alias, as informações relacionadas são adicionadas para o Types tabela.When you bind a rule to an alias data type, related information is added to the sys.types table.

PermissõesPermissions

Para associar uma regra a uma coluna de tabela, você deve ter a permissão ALTER na tabela.To bind a rule to a table column, you must have ALTER permission on the table. É necessário ter a permissão CONTROL no tipo de dados de alias ou a permissão ALTER no esquema ao qual o tipo pertence para associar uma regra a um tipo de dados de alias.CONTROL permission on the alias data type, or ALTER permission on the schema to which the type belongs, is required to bind a rule to an alias data type.

ExemplosExamples

A.A. Associando uma regra a uma colunaBinding a rule to a column

Supondo que uma regra chamada today tenha sido criada no banco de dados atual usando a instrução CREATE RULE, o exemplo a seguir associa a regra à coluna HireDate da tabela Employee.Assuming that a rule named today has been created in the current database by using the CREATE RULE statement, the following example binds the rule to the HireDate column of the Employee table. Quando uma linha é acrescentada a Employee, os dados para a coluna HireDate são verificados em relação à regra today.When a row is added to Employee, the data for the HireDate column is checked against the today rule.

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

B.B. Associando uma regra a um tipo de dados de aliasBinding a rule to an alias data type

Supondo a existência de uma regra chamada rule_ssn e um tipo de dados de alias chamado ssn, o exemplo a seguir associa rule_ssn a ssn.Assuming the existence of a rule named rule_ssn and an alias data type named ssn, the following example binds rule_ssn to ssn. Em uma instrução CREATE TABLE, as colunas de tipo ssn herdam a regra rule_ssn.In a CREATE TABLE statement, columns of type ssn inherit the rule_ssn rule. As colunas existentes do tipo ssn também herdam a rule_ssn de regra, a menos que futureonly é especificado para futureonly_flag, ou ssn tem uma regra associada diretamente a ele.Existing columns of type ssn also inherit the rule_ssn rule, unless futureonly is specified for futureonly_flag, or ssn has a rule bound directly to it. As regras associadas a colunas sempre têm precedência sobre as associadas aos tipos de dados.Rules bound to columns always take precedence over those bound to data types.

USE master;  
GO  
EXEC sp_bindrule 'rule_ssn', 'ssn';  

C.C. Usando o futureonly_flagUsing the futureonly_flag

O exemplo a seguir associa a regra rule_ssn ao tipo de dados de alias ssn.The following example binds the rule_ssn rule to the alias data type ssn. Como futureonly foi especificado, nenhuma coluna existente do tipo ssn será afetada.Because futureonly is specified, no existing columns of type ssn are affected.

USE master;  
GO  
EXEC sp_bindrule rule_ssn, 'ssn', 'futureonly';  

D.D. Usando identificadores delimitadosUsing delimited identifiers

O exemplo a seguir mostra o uso de identificadores delimitados object_name parâmetro.The following example shows the use of delimited identifiers in object_name parameter.

USE master;  
GO  
CREATE TABLE [t.2] (c1 int) ;  
-- Notice the period as part of the table name.  
EXEC sp_bindrule rule1, '[t.2].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émSee Also

Procedimentos armazenados do sistema (Transact-SQL) System Stored Procedures (Transact-SQL)
Procedimentos armazenados do mecanismo de banco de dados (Transact-SQL) Database Engine Stored Procedures (Transact-SQL)
CREATE RULE (Transact-SQL) CREATE RULE (Transact-SQL)
DROP RULE (Transact-SQL) DROP RULE (Transact-SQL)
sp_unbindrule (Transact-SQL) sp_unbindrule (Transact-SQL)
Procedimentos armazenados do sistema (Transact-SQL)System Stored Procedures (Transact-SQL)