Se você precisar ativar ou desativar todos os
CHECK
restrições no SQLite, você pode usar as ignore_check_constraints Declaração PRAGMA. Esta declaração pragma habilita ou desabilita explicitamente a aplicação de
CHECK
restrições. A configuração padrão está desativada, o que significa que CHECK
restrições são impostas por padrão. Sintaxe
A sintaxe fica assim:
PRAGMA ignore_check_constraints = boolean;
Onde booleano é um valor booleano.
- Para desativar
CHECK
restrições, isso pode ser qualquer um dos seguintes:false
no
off
0
- Para ativar
CHECK
restrições, isso pode ser qualquer um dos seguintes:true
yes
on
1
Exemplo
Primeiro, vamos criar uma tabela com um
CHECK
limitação:CREATE TABLE Products(
ProductId INTEGER PRIMARY KEY,
ProductName,
Price
CHECK (Price > 0)
);
Agora podemos alternar
CHECK
restrições ativadas ou desativadas conforme necessário para impor ou não essa restrição. Ativar restrições CHECK
Aqui está um exemplo de como habilitar todos os
CHECK
restrições:PRAGMA ignore_check_constraints = 0;
Como mencionado, este é o valor padrão de qualquer maneira. Então, se você não usar esta instrução PRAGMA
CHECK
as restrições já estarão definidas para esse valor. Agora vamos testar esse
CHECK
restrições são de fato habilitadas ao tentar inserir dados que violem esse CHECK
limitação:INSERT INTO Products VALUES
(NULL, 'Blue Widget', 0.00);
Resultado:
Error: CHECK constraint failed: Products
Portanto, o
CHECK
restrição foi aplicada como esperado. Desativar restrições CHECK
Aqui está um exemplo de como desabilitar todos os
CHECK
restrições:PRAGMA ignore_check_constraints = 1;
Agora vamos tentar inserir os mesmos dados novamente e selecionar o resultado:
INSERT INTO Products VALUES
(NULL, 'Blue Widget', 0.00);
SELECT * FROM Products;
Resultado:
ProductId ProductName Price ---------- ----------- ---------- 1 Blue Widget 0.0
Como esperado, os dados conseguiram entrar no banco de dados, mesmo violando o
CHECK
limitação.