Als u ooit alle CHECK
. moet in- of uitschakelen beperkingen in SQLite, kunt u de ignore_check_constraints gebruiken PRAGMA-verklaring.
Deze pragmaverklaring schakelt expliciet de handhaving van CHECK
. in of uit beperkingen. De standaardinstelling is uit, wat betekent dat CHECK
beperkingen worden standaard afgedwongen.
Syntaxis
De syntaxis gaat als volgt:
PRAGMA ignore_check_constraints = boolean;
Waar booleaans is een booleaanse waarde.
- Om
CHECK
uit te schakelen beperkingen, kan dit een van de volgende zijn:false
no
off
0
- Om
CHECK
in te schakelen beperkingen, kan dit een van de volgende zijn:true
yes
on
1
Voorbeeld
Laten we eerst een tabel maken met een CHECK
beperking:
CREATE TABLE Products(
ProductId INTEGER PRIMARY KEY,
ProductName,
Price
CHECK (Price > 0)
);
Nu kunnen we CHECK
schakelen beperkingen aan of uit zoals vereist om die beperking al dan niet af te dwingen.
Controleer beperkingen inschakelen
Hier is een voorbeeld van het inschakelen van alle CHECK
beperkingen:
PRAGMA ignore_check_constraints = 0;
Zoals gezegd is dit sowieso de standaardwaarde. Dus als u dit PRAGMA-statement niet gebruikt CHECK
beperkingen zijn al op deze waarde ingesteld.
Laten we nu eens testen dat CHECK
beperkingen worden in feite mogelijk gemaakt door te proberen gegevens in te voegen die in strijd zijn met die CHECK
beperking:
INSERT INTO Products VALUES
(NULL, 'Blue Widget', 0.00);
Resultaat:
Error: CHECK constraint failed: Products
Dus de CHECK
beperking werd toegepast zoals verwacht.
Check-beperkingen uitschakelen
Hier is een voorbeeld van het uitschakelen van alle CHECK
beperkingen:
PRAGMA ignore_check_constraints = 1;
Laten we nu proberen dezelfde gegevens opnieuw in te voeren en het resultaat te selecteren:
INSERT INTO Products VALUES
(NULL, 'Blue Widget', 0.00);
SELECT * FROM Products;
Resultaat:
ProductId ProductName Price ---------- ----------- ---------- 1 Blue Widget 0.0
Zoals verwacht zijn de gegevens erin geslaagd de database binnen te komen, ook al schendt het de CHECK
beperking.