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
CHECK
Beschränkungen kann dies eine der folgenden sein:false
no
off
0
- Um
CHECK
zu aktivieren Beschränkungen kann dies eine der folgenden sein:true
yes
on
1
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.