sp_bindrule (Transact-SQL)
Aplica-se a: SQL Server Banco 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 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.