SQLite
 sql >> Base de données >  >> RDS >> SQLite

Comment activer/désactiver les contraintes CHECK dans SQLite

Si jamais vous avez besoin d'activer ou de désactiver tous les CHECK contraintes dans SQLite, vous pouvez utiliser les ignore_check_constraints Déclaration PRAGMA.

Cette instruction pragma active ou désactive explicitement l'application de CHECK contraintes. Le paramètre par défaut est désactivé, ce qui signifie que CHECK les contraintes sont appliquées par défaut.

Syntaxe

La syntaxe ressemble à ceci :

PRAGMA ignore_check_constraints = boolean;

booléen est une valeur booléenne.

  • Pour désactiver CHECK contraintes, il peut s'agir de l'une des valeurs suivantes :
    • false
    • no
    • off
    • 0
  • Pour activer CHECK contraintes, il peut s'agir de l'une des valeurs suivantes :
    • true
    • yes
    • on
    • 1

Exemple

Commençons par créer une table avec un CHECK contrainte :

CREATE TABLE Products( 
    ProductId INTEGER PRIMARY KEY, 
    ProductName, 
    Price 
    CHECK (Price > 0)
);

Maintenant, nous pouvons basculer CHECK contraintes activées ou désactivées selon les besoins pour appliquer ou non cette contrainte.

Activer les contraintes de VÉRIFICATION

Voici un exemple d'activation de tous les CHECK contraintes :

PRAGMA ignore_check_constraints = 0;

Comme mentionné, il s'agit de toute façon de la valeur par défaut. Donc, si vous n'utilisez pas cette instruction PRAGMA CHECK les contraintes seront déjà définies sur cette valeur.

Testons maintenant que CHECK les contraintes sont en fait activées en essayant d'insérer des données qui violent ce CHECK contrainte :

INSERT INTO Products VALUES 
    (NULL, 'Blue Widget', 0.00);

Résultat :

Error: CHECK constraint failed: Products

Donc le CHECK contrainte a été appliquée comme prévu.

Désactiver les contraintes CHECK

Voici un exemple de désactivation de tous les CHECK contraintes :

PRAGMA ignore_check_constraints = 1;

Essayons maintenant d'insérer à nouveau les mêmes données et sélectionnons le résultat :

INSERT INTO Products VALUES 
    (NULL, 'Blue Widget', 0.00);

SELECT * FROM Products;

Résultat :

ProductId   ProductName  Price     
----------  -----------  ----------
1           Blue Widget  0.0       

Comme prévu, les données ont réussi à entrer dans la base de données, même si elles violent le CHECK contrainte.