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
CHECKbegrænsninger, kan dette være en af følgende:falsenooff0
- For at aktivere
CHECKbegrænsninger, kan dette være en af følgende:trueyeson1
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.