SQLite
 sql >> Datenbank >  >> RDS >> SQLite

So aktivieren/deaktivieren Sie CHECK-Einschränkungen in SQLite

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.