sp_bindrule (Transact-SQL)

Aplica-se a:SQL ServerBanco de Dados SQL do Azure

Associa uma regra 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. Em vez disso, use restrições exclusivas e verifique as restrições. As restrições CHECK são criadas usando a palavra-chave CHECK das instruções CREATE TABLE ou ALTER TABLE .

Convenções de sintaxe de Transact-SQL

Sintaxe

sp_bindrule
    [ @rulename = ] N'rulename'
    , [ @objname = ] N'objname'
    [ , [ @futureonly = ] 'futureonly' ]
[ ; ]

Argumentos

@rulename [ = ] N'nome da regra'

O nome de uma regra criada pela CREATE RULE instrução. @rulename é nvarchar(776), sem padrão.

@objname [ = ] N'objname'

A tabela e a coluna ou o tipo de dados de alias ao qual a regra deve ser vinculada. @objname é nvarchar(776), sem padrão.

Uma regra não pode ser vinculada a uma coluna text, ntext, image, varchar(max), nvarchar(max), varbinary(max), xml, CLR user-defined type ou timestamp . Uma regra não pode ser vinculada a uma coluna computada.

@objname é nvarchar(776) sem padrão. 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; 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 @rulename a menos que uma regra esteja vinculada diretamente à coluna.

@objname pode conter os caracteres de colchete ([ e ]) como caracteres identificadores delimitados. Para obter mais informações, consulte Identificadores de banco de dados.

As regras criadas em expressões que usam tipos de dados de alias podem ser vinculadas a colunas ou tipos de dados de alias, mas não são compiladas quando são referenciadas. Evite usar regras criadas em tipos de dados de alias.

@futureonly [ = ] 'somente no futuro'

Usado somente ao vincular uma regra a um tipo de dados de alias. @futureonly é varchar(15), com um padrão de NULL. Esse parâmetro, quando definido como futureonly, impede que colunas existentes de um tipo de dados de alias herdem a nova regra. Se @futureonly for NULL, a nova regra será vinculada a quaisquer colunas do tipo de dados alias que atualmente não tenham nenhuma regra ou que estejam usando a regra existente do tipo de dados alias.

Valores do código de retorno

0 (sucesso) ou 1 (falha).

Comentários

Você pode vincular uma nova regra a uma coluna (embora o uso de uma CHECK restrição seja preferível) ou a um tipo de dados de alias sem sp_bindrule desvincular uma regra existente. A regra antiga é substituída. Se uma regra estiver vinculada a uma coluna com uma restrição existente CHECK , todas as restrições serão avaliadas. Não é possível vincular uma regra a um tipo de dados do SQL Server.

A regra é aplicada quando uma INSERT declaração é tentada, não na vinculação. Você pode vincular uma regra de caractere a uma coluna do tipo de dados numéricos, embora essa INSERT operação não seja válida.

As colunas existentes do tipo de dados alias herdam a nova regra, a menos que @futureonly seja especificado como futureonly. As novas colunas definidas com o tipo de dados de alias sempre herdam a regra. No entanto, se a ALTER COLUMN cláusula de uma ALTER TABLE instrução alterar o tipo de dados de uma coluna para um tipo de dados de alias vinculado a uma regra, a regra vinculada ao tipo de dados não será herdada pela coluna. A regra deve ser especificamente vinculada à coluna usando sp_bindrule.

Quando você vincula uma regra a uma coluna, as informações relacionadas são adicionadas à sys.columns tabela. Quando você vincula uma regra a um tipo de dados de alias, as informações relacionadas são adicionadas à sys.types tabela.

Permissões

Para vincular uma regra a uma coluna de tabela, você deve ter ALTER permissão na tabela. CONTROL A permissão no tipo de dados alias ou ALTER permissão no esquema ao qual o tipo pertence, é necessária para vincular uma regra a um tipo de dados alias.

Exemplos

R. Vincular uma regra a uma coluna

Supondo que uma regra chamada today seja criada no banco de dados atual usando a CREATE RULE instrução, o exemplo a seguir vincula a regra à HireDate coluna da Employee tabela. Quando uma linha é acrescentada a Employee, os dados para a coluna HireDate são verificados em relação à regra today.

USE master;
GO

EXEC sp_bindrule 'today', 'HumanResources.Employee.HireDate';

B. Vincular uma regra a um tipo de dados de alias

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. Em uma CREATE TABLE instrução, colunas do tipo ssn herdam a rule_ssn regra. As colunas existentes do tipo ssn também herdam a regra, a rule_ssn menos que futureonly seja especificado para @futureonly ou ssn tenha uma regra vinculada diretamente a ela. As regras vinculadas a colunas sempre têm precedência sobre os padrões vinculados a tipos de dados.

USE master;
GO

EXEC sp_bindrule 'rule_ssn', 'ssn';

C. Use a futureonly opção

O exemplo a seguir associa a regra rule_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_bindrule rule_ssn, 'ssn', 'futureonly';

D. Usar identificadores delimitados

O exemplo a seguir mostra o uso de identificadores delimitados em @objname parâmetro.

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.