Partilhar via


sp_bindrule (Transact-SQL)

Aplica-se a:SQL ServerAzure SQL DatabaseBase de dados SQL no Microsoft Fabric

Vincula uma regra 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. Use restrições únicas e verifique as restrições em vez disso. As restrições CHECK são criadas usando a palavra-chave CHECK das instruções CREATE TABLE ou ALTER TABLE .

Transact-SQL convenções de sintaxe

Sintaxe

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

Arguments

[ @rulename = ] N'nome da regra'

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

[ @objname = ] N'objname'

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

Uma regra não pode ser vinculada a uma coluna de texto, ntext, imagem, varchar(max),nvarchar(max), varbinary(max),xml, tipo CLR definido pelo utilizador ou uma coluna de carimbo temporal . Uma regra não pode ser vinculada a uma coluna computada.

@objname é nvarchar(776) sem padrão. 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; se esta resolução falhar, resolve como um tipo de dado alias. Por defeito, as colunas existentes do tipo de dado alias herdam @rulename a menos que uma regra esteja diretamente vinculada à coluna.

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

Regras criadas em expressões que usam tipos de dados alias podem ser atribuídas a colunas ou tipos de dados de alias, mas falham em compilar quando são referenciadas. Evite usar regras criadas sobre tipos de dados de alias.

[ @futureonly = ] 'Futuros-Only'

Usado apenas quando se associa uma regra a um tipo de dado de alias. @futureonly é varchar(15), com um padrão de NULL. Este parâmetro, quando definido como futureonly, impede que colunas existentes de um tipo de dado alias herdem a nova regra. Se @futureonly for NULL, a nova regra está vinculada a quaisquer colunas do tipo de dado alias que atualmente não tenham regra ou que estejam a usar a regra existente do tipo de dado alias.

Valores de código de retorno

0 (sucesso) ou 1 (fracasso).

Observações

Pode vincular uma nova regra a uma coluna (embora seja preferível usar uma CHECK restrição) ou a um tipo de dado alias sem sp_bindrule desvincular uma regra existente. A velha regra é anulada. Se uma regra estiver vinculada a uma coluna com uma restrição existente CHECK , todas as restrições são avaliadas. Não se pode atribuir uma regra a um tipo de dado SQL Server.

A regra é aplicada quando uma INSERT afirmação é tentada, não quando é vinculativa. Podes associar uma regra de carácter a uma coluna de tipo de dado numérico , embora tal INSERT operação não seja válida.

Colunas existentes do tipo de dado alias herdam a nova regra, a menos que @futureonly seja especificada como futureonly. Novas colunas definidas com o tipo de dado alias herdam sempre a regra. No entanto, se a ALTER COLUMN cláusula de uma ALTER TABLE instrução mudar o tipo de dado de uma coluna para um tipo de dado alias vinculado a uma regra, a regra vinculada ao tipo de dados não é herdada pela coluna. A regra deve estar especificamente ligada à coluna usando sp_bindrule.

Quando associa uma regra a uma coluna, a informação relacionada é adicionada à sys.columns tabela. Quando associa uma regra a um tipo de dado de alias, a informação relacionada é adicionada à sys.types tabela.

Permissions

Para vincular uma regra a uma coluna de tabela, deve ter ALTER permissão na tabela. CONTROL é necessária permissão sobre o tipo de dado de alias, ou ALTER permissão sobre o esquema a que o tipo pertence, para vincular uma regra a um tipo de dado de alias.

Examples

A. Vincular uma regra a uma coluna

Assumindo que uma regra nomeada today é criada na base de dados atual usando a CREATE RULE instrução, o exemplo seguinte vincula a regra à HireDate coluna da Employee tabela. Quando uma linha é adicionada a Employee, os dados da HireDate coluna são verificados em relação à today regra.

USE master;
GO

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

B. Associe uma regra a um tipo de dado de alias

Assumindo a existência de uma regra nomeada rule_ssn e um tipo de dado alias chamado ssn, o seguinte exemplo liga-se rule_ssn a ssn. Numa CREATE TABLE instrução, colunas de tipo ssn herdam a rule_ssn regra. Colunas existentes do tipo ssn também herdam a rule_ssn regra, a menos que o futureonly seja especificado para @futureonly, ou ssn tenha uma regra diretamente vinculada a ela. Regras vinculadas a colunas têm sempre prioridade sobre as predefinidas vinculadas a tipos de dados.

USE master;
GO

EXECUTE sp_bindrule 'rule_ssn', 'ssn';

C. Use a futureonly opção

O exemplo seguinte associa a rule_ssn regra ao tipo ssnde dado de alias . Como futureonly está especificado, nenhuma coluna existente do tipo ssn é afetada.

USE master;
GO

EXECUTE sp_bindrule rule_ssn, 'ssn', 'futureonly';

D. Usar identificadores delimitados

O exemplo seguinte 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.
EXECUTE 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.