Hvis du nogensinde har brug for at aktivere eller deaktivere alle CHECK
begrænsninger i SQLite, kan du bruge ignore_check_constraints PRAGMA-udsagn.
Denne pragmaerklæring aktiverer eller deaktiverer eksplicit håndhævelsen af CHECK
begrænsninger. Standardindstillingen er slået fra, hvilket betyder at CHECK
begrænsninger håndhæves som standard.
Syntaks
Syntaksen ser sådan ud:
PRAGMA ignore_check_constraints = boolean;
Hvor boolesk er en boolesk værdi.
- For at deaktivere
CHECK
begrænsninger, kan dette være en af følgende:false
no
off
0
- For at aktivere
CHECK
begrænsninger, kan dette være en af følgende:true
yes
on
1
Eksempel
Lad os først oprette en tabel med en CHECK
begrænsning:
CREATE TABLE Products(
ProductId INTEGER PRIMARY KEY,
ProductName,
Price
CHECK (Price > 0)
);
Nu kan vi skifte CHECK
begrænsninger til eller fra efter behov for enten at håndhæve eller ikke håndhæve denne begrænsning.
Aktiver CHECK-begrænsninger
Her er et eksempel på aktivering af alle CHECK
begrænsninger:
PRAGMA ignore_check_constraints = 0;
Som nævnt er dette alligevel standardværdien. Så hvis du ikke bruger denne PRAGMA-sætning CHECK
begrænsninger vil allerede være indstillet til denne værdi.
Lad os nu teste den CHECK
begrænsninger er faktisk aktiveret ved at forsøge at indsætte data, der overtræder denne CHECK
begrænsning:
INSERT INTO Products VALUES
(NULL, 'Blue Widget', 0.00);
Resultat:
Error: CHECK constraint failed: Products
Så CHECK
begrænsning blev håndhævet som forventet.
Deaktiver CHECK-begrænsninger
Her er et eksempel på deaktivering af alle CHECK
begrænsninger:
PRAGMA ignore_check_constraints = 1;
Lad os nu prøve at indsætte de samme data igen og vælge resultatet:
INSERT INTO Products VALUES
(NULL, 'Blue Widget', 0.00);
SELECT * FROM Products;
Resultat:
ProductId ProductName Price ---------- ----------- ---------- 1 Blue Widget 0.0
Som forventet lykkedes det for data at komme ind i databasen, selvom det overtræder CHECK
begrænsning.