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.
Conteúdo relacionado
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários