Si alguna vez necesita habilitar o deshabilitar todos los CHECK
restricciones en SQLite, puede usar ignore_check_constraints Declaración PRAGMA.
Esta declaración de pragma habilita o deshabilita explícitamente la aplicación de CHECK
restricciones La configuración predeterminada está desactivada, lo que significa que CHECK
las restricciones se aplican de forma predeterminada.
Sintaxis
La sintaxis es así:
PRAGMA ignore_check_constraints = boolean;
Donde booleano es un valor booleano.
- Para deshabilitar
CHECK
restricciones, puede ser cualquiera de las siguientes:false
no
off
0
- Para habilitar
CHECK
restricciones, esto puede ser cualquiera de los siguientes:true
yes
on
1
Ejemplo
Primero, creemos una tabla con un CHECK
restricción:
CREATE TABLE Products(
ProductId INTEGER PRIMARY KEY,
ProductName,
Price
CHECK (Price > 0)
);
Ahora podemos alternar CHECK
activar o desactivar las restricciones según sea necesario para aplicar o no aplicar esa restricción.
Habilitar restricciones CHECK
Aquí hay un ejemplo de cómo habilitar todos los CHECK
restricciones:
PRAGMA ignore_check_constraints = 0;
Como se mencionó, este es el valor predeterminado de todos modos. Entonces, si no usa esta declaración PRAGMA CHECK
las restricciones ya se establecerán en este valor.
Ahora probemos que CHECK
de hecho, las restricciones están habilitadas al intentar insertar datos que violan ese CHECK
restricción:
INSERT INTO Products VALUES
(NULL, 'Blue Widget', 0.00);
Resultado:
Error: CHECK constraint failed: Products
Entonces el CHECK
la restricción se aplicó como se esperaba.
Deshabilitar restricciones CHECK
Aquí hay un ejemplo de cómo deshabilitar todos los CHECK
restricciones:
PRAGMA ignore_check_constraints = 1;
Ahora intentemos insertar los mismos datos nuevamente y seleccionemos el resultado:
INSERT INTO Products VALUES
(NULL, 'Blue Widget', 0.00);
SELECT * FROM Products;
Resultado:
ProductId ProductName Price ---------- ----------- ---------- 1 Blue Widget 0.0
Como era de esperar, los datos lograron ingresar a la base de datos, a pesar de que viola el CHECK
restricción.