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
CHECK
begränsningar kan detta vara något av följande:false
no
off
0
- För att aktivera
CHECK
begränsningar kan detta vara något av följande:true
yes
on
1
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.