Om du någonsin behöver aktivera eller inaktivera alla CHECK begränsningar i SQLite kan du använda ignore_check_constraints PRAGMA uttalande.
Detta pragmauttalande aktiverar eller inaktiverar uttryckligen tillämpningen av CHECK begränsningar. Standardinställningen är av, vilket betyder att CHECK begränsningar upprätthålls som standard.
Syntax
Syntaxen ser ut så här:
PRAGMA ignore_check_constraints = boolean; Där boolesk är ett booleskt värde.
- För att inaktivera
CHECKbegränsningar kan detta vara något av följande:falsenooff0
- För att aktivera
CHECKbegränsningar kan detta vara något av följande:trueyeson1
Exempel
Låt oss först skapa en tabell med en CHECK begränsning:
CREATE TABLE Products(
ProductId INTEGER PRIMARY KEY,
ProductName,
Price
CHECK (Price > 0)
);
Nu kan vi växla mellan CHECK begränsningar på eller av efter behov för att antingen genomdriva eller inte genomdriva den begränsningen.
Aktivera CHECK-begränsningar
Här är ett exempel på hur du aktiverar alla CHECK begränsningar:
PRAGMA ignore_check_constraints = 0;
Som nämnts är detta standardvärdet ändå. Så om du inte använder denna PRAGMA-sats CHECK begränsningar kommer redan att vara inställda på detta värde.
Låt oss nu testa den CHECK begränsningar är i själva verket aktiverade genom att försöka infoga data som bryter mot den CHECK begränsning:
INSERT INTO Products VALUES
(NULL, 'Blue Widget', 0.00); Resultat:
Error: CHECK constraint failed: Products
Så CHECK begränsning tillämpades som förväntat.
Inaktivera CHECK-begränsningar
Här är ett exempel på hur du inaktiverar alla CHECK begränsningar:
PRAGMA ignore_check_constraints = 1; Låt oss nu försöka infoga samma data igen och välj resultatet:
INSERT INTO Products VALUES
(NULL, 'Blue Widget', 0.00);
SELECT * FROM Products; Resultat:
ProductId ProductName Price ---------- ----------- ---------- 1 Blue Widget 0.0
Som förväntat lyckades data komma in i databasen, trots att den bryter mot CHECK begränsning.