Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Sistema de Plataforma de Análise (PDW)
Base de dados SQL no Microsoft Fabric
Cria um objeto chamado regra. Quando associada a uma coluna ou a um tipo de dados de alias, uma regra especifica os valores aceitáveis que podem ser inseridos nessa coluna.
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. Em vez disso, recomendamos que você use restrições de verificação. As restrições de verificação são criadas usando a palavra-chave CHECK de CREATE TABLE ou ALTER TABLE. Para obter mais informações, consulte Restrições exclusivas e Restrições de verificação.
Um tipo de dados de coluna ou alias pode ter apenas uma regra vinculada a ela. No entanto, uma coluna pode ter uma regra e uma ou mais restrições de verificação associadas a ela. Quando isso é verdade, todas as restrições são avaliadas.
Transact-SQL convenções de sintaxe
Sintaxe
CREATE RULE [ schema_name . ] rule_name
AS condition_expression
[ ; ]
Argumentos
schema_name
É o nome do esquema ao qual a regra pertence.
rule_name
É o nome da nova regra. Os nomes das regras devem estar em conformidade com as regras para identificadores. Especificar o nome do proprietário da regra é opcional.
condition_expression
É a condição ou condições que definem a regra. Uma regra pode ser qualquer expressão válida em uma cláusula WHERE e pode incluir elementos como operadores aritméticos, operadores relacionais e predicados (por exemplo, IN, LIKE, BETWEEN). Uma regra não pode fazer referência a colunas ou outros objetos de banco de dados. Funções internas que não fazem referência a objetos de banco de dados podem ser incluídas. As funções definidas pelo usuário não podem ser usadas.
condition_expression inclui uma variável. O sinal de at (@) precede cada variável local. A expressão refere-se ao valor inserido com a instrução UPDATE ou INSERT. Qualquer nome ou símbolo pode ser usado para representar o valor ao criar a regra, mas o primeiro caractere deve ser o sinal de arroba (@).
Observação
Evite criar regras em expressões que usam tipos de dados de alias. Embora as regras possam ser criadas em expressões que usam tipos de dados de alias, depois de vincular as regras a colunas ou tipos de dados de alias, as expressões não são compiladas quando referenciadas.
Observações
CREATE RULE não pode ser combinado com outras instruções Transact-SQL em um único lote. As regras não se aplicam aos dados já existentes no banco de dados no momento em que as regras são criadas, e as regras não podem ser vinculadas a tipos de dados do sistema.
Uma regra só pode ser criada no banco de dados atual. Depois de criar uma regra, execute sp_bindrule para vincular a regra a uma coluna ou a um tipo de dados de alias. Uma regra deve ser compatível com o tipo de dados da coluna. Por exemplo, "@value LIKE A%" não pode ser usado como regra para uma coluna numérica. Uma regra não pode ser vinculada a um texto, ntext, image, varchar(max), nvarchar(max), varbinary(max), xml, tipo definido pelo usuário CLR ou coluna de carimbo de data/hora . Uma regra não pode ser vinculada a uma coluna calculada.
Coloque constantes de caractere e data entre aspas simples (') e preceda constantes binárias com 0x. Se a regra não for compatível com a coluna à qual está vinculada, o Mecanismo de Banco de Dados do SQL Server retornará uma mensagem de erro quando um valor for inserido, mas não quando a regra estiver vinculada.
Uma regra vinculada a um tipo de dados de alias é ativada somente quando você tenta inserir um valor ou atualizar uma coluna de banco de dados do tipo de dados de alias. Como as regras não testam variáveis, não atribua um valor a uma variável de tipo de dados de alias que seria rejeitada por uma regra vinculada a uma coluna do mesmo tipo de dados.
Para obter um relatório sobre uma regra, use sp_help. Para exibir o texto de uma regra, execute sp_helptext com o nome da regra como parâmetro. Para renomear uma regra, use sp_rename.
Uma regra deve ser descartada usando DROP RULE antes que uma nova com o mesmo nome seja criada, e a regra deve ser desvinculada usando sp_unbindrule antes de ser descartada. Para desvincular uma regra de uma coluna, use sp_unbindrule.
Você pode vincular uma nova regra a uma coluna ou tipo de dados sem desvincular a anterior; a nova regra substitui a anterior. As regras vinculadas a colunas sempre têm precedência sobre as regras vinculadas a tipos de dados de alias. A vinculação de uma regra a uma coluna substitui uma regra já vinculada ao tipo de dados de alias dessa coluna. Mas vincular uma regra a um tipo de dados não substitui uma regra vinculada a uma coluna desse tipo de dados de alias. A tabela a seguir mostra a precedência em vigor quando as regras são vinculadas a colunas e a tipos de dados de alias nos quais as regras já existem.
| Nova regra vinculada a | Regra antiga vinculada a tipo de dados de alias |
Regra antiga vinculada a Coluna |
|---|---|---|
| Tipo de dados de alias | Regra antiga substituída | Sem alteração |
| Coluna | Regra antiga substituída | Regra antiga substituída |
Se uma coluna tiver um padrão e uma regra associada a ela, o padrão deverá estar dentro do domínio definido pela regra. Um padrão que entra em conflito com uma regra nunca é inserido. O Mecanismo de Banco de Dados do SQL Server gera uma mensagem de erro sempre que tenta inserir esse padrão.
Permissões
Para executar CREATE RULE, no mínimo, um usuário deve ter a permissão CREATE RULE no banco de dados atual e a permissão ALTER no esquema no qual a regra está sendo criada.
Exemplos
Um. Criando uma regra com um intervalo
O exemplo a seguir cria uma regra que restringe o intervalo de inteiros inseridos na coluna ou colunas às quais essa regra está vinculada.
CREATE RULE range_rule
AS
@range>= $1000 AND @range <$20000;
B. Criar uma regra com uma lista
O exemplo a seguir cria uma regra que restringe os valores reais inseridos na coluna ou colunas (às quais essa regra está vinculada) apenas àqueles listados na regra.
CREATE RULE list_rule
AS
@list IN ('1389', '0736', '0877');
C. Criando uma regra com um padrão
O exemplo a seguir cria uma regra para seguir um padrão de dois caracteres seguidos por um hífen (-), qualquer número de caracteres ou nenhum caractere e terminando com um inteiro de 0 até 9.
CREATE RULE pattern_rule
AS
@value LIKE '__-%[0-9]'
Ver também
ALTERAR TABELA (Transact-SQL)
CRIAR PADRÃO (Transact-SQL)
CRIAR TABELA (Transact-SQL)
DROP DEFAULT (Transact-SQL)
REGRA DE LARGADA (Transact-SQL)
Expressões (Transact-SQL)
sp_bindrule (Transact-SQL)
sp_help (Transact-SQL)
sp_helptext (Transact-SQL)
sp_rename (Transact-SQL)
sp_unbindrule (Transact-SQL)
ONDE (Transact-SQL)