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;
Où 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.