sql >> Base de Datos >  >> RDS >> SQLite

Cómo habilitar/deshabilitar las restricciones CHECK en SQLite

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.