Partilhar via


sp_bindrule (Transact-SQL)

Aplica-se a: Banco de Dados SQL do Azure do SQL Server

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 restrições de verificação. 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 associada. @objname é nvarchar(776), sem padrão.

Uma regra não pode ser associada a uma coluna text, ntext, image, varchar(max), nvarchar(max), varbinary(max), xml, tipo definido pelo usuário CLR ou carimbo de data/hora . Uma regra não pode ser associada 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 uma 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 de alias herdam @rulename a menos que uma regra seja associada 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 associadas 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 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 as colunas existentes de um tipo de dados de alias herdem a nova regra. Se @futureonly for NULL, a nova regra será vinculada a todas as colunas do tipo de dados de alias que atualmente não têm regra ou que estão usando a regra existente do tipo de dados de alias.

Valores do código de retorno

0 (sucesso) ou 1 (falha).

Comentários

Você pode vincular uma nova regra a uma coluna (embora seja preferível usar uma CHECK restrição) 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. Você não pode associar uma regra a um tipo de dados do SQL Server.

A regra é imposta quando uma INSERT instrução é tentada, não na associação. Você pode associar uma regra de caractere a uma coluna de tipo de dados numéricos , embora essa INSERT operação não seja válida.

As colunas existentes do tipo de dados de 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 associado a uma regra, a regra associada ao tipo de dados não será herdada pela coluna. A regra deve ser especificamente associada à 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 da tabela, você deve ter ALTER permissão na tabela. CONTROL A permissão no tipo de dados de alias ou ALTER a permissão no esquema ao qual o tipo pertence é necessária para vincular uma regra a um tipo de dados de alias.

Exemplos

R. Associar uma regra a uma coluna

Supondo que uma regra nomeada today seja criada no banco de dados atual usando a CREATE RULE instrução, o exemplo a seguir associa 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, as 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 associada diretamente a ela. As regras associadas a colunas sempre têm precedência sobre os padrões associados 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.