Wenn Sie jemals alle CHECK aktivieren oder deaktivieren müssen Einschränkungen in SQLite können Sie die ignore_check_constraints verwenden PRAGMA-Erklärung.
Diese Pragma-Anweisung aktiviert oder deaktiviert explizit die Erzwingung von CHECK Einschränkungen. Die Standardeinstellung ist aus, was bedeutet, dass CHECK Einschränkungen werden standardmäßig erzwungen.
Syntax
Die Syntax lautet wie folgt:
PRAGMA ignore_check_constraints = boolean; Wo boolesch ist ein boolescher Wert.
- Zum Deaktivieren von
CHECKBeschränkungen kann dies eine der folgenden sein:falsenooff0
- Um
CHECKzu aktivieren Beschränkungen kann dies eine der folgenden sein:trueyeson1
Beispiel
Lassen Sie uns zunächst eine Tabelle mit einem CHECK erstellen Einschränkung:
CREATE TABLE Products(
ProductId INTEGER PRIMARY KEY,
ProductName,
Price
CHECK (Price > 0)
);
Jetzt können wir CHECK umschalten Beschränkungen je nach Bedarf ein- oder ausschalten, um diese Beschränkung entweder durchzusetzen oder nicht durchzusetzen.
CHECK-Einschränkungen aktivieren
Hier ist ein Beispiel für die Aktivierung aller CHECK Einschränkungen:
PRAGMA ignore_check_constraints = 0;
Wie bereits erwähnt, ist dies sowieso der Standardwert. Wenn Sie also diese PRAGMA-Anweisung nicht verwenden CHECK Beschränkungen sind bereits auf diesen Wert gesetzt.
Lassen Sie uns nun diesen CHECK testen Beschränkungen werden tatsächlich aktiviert, indem versucht wird, Daten einzufügen, die gegen diesen CHECK verstoßen Einschränkung:
INSERT INTO Products VALUES
(NULL, 'Blue Widget', 0.00); Ergebnis:
Error: CHECK constraint failed: Products
Also das CHECK Einschränkung wurde wie erwartet erzwungen.
CHECK-Einschränkungen deaktivieren
Hier ist ein Beispiel für das Deaktivieren aller CHECK Einschränkungen:
PRAGMA ignore_check_constraints = 1; Lassen Sie uns nun versuchen, dieselben Daten erneut einzufügen und das Ergebnis auszuwählen:
INSERT INTO Products VALUES
(NULL, 'Blue Widget', 0.00);
SELECT * FROM Products; Ergebnis:
ProductId ProductName Price ---------- ----------- ---------- 1 Blue Widget 0.0
Wie erwartet gelang es den Daten, in die Datenbank einzudringen, obwohl sie gegen den CHECK verstoßen Einschränkung.