Pokud budete někdy potřebovat povolit nebo zakázat všechny CHECK omezení v SQLite, můžete použít ignore_check_constraints prohlášení PRAGMA.
Toto pragma prohlášení výslovně povoluje nebo zakazuje vynucení CHECK omezení. Výchozí nastavení je vypnuto, což znamená CHECK omezení jsou standardně vynucena.
Syntaxe
Syntaxe vypadá takto:
PRAGMA ignore_check_constraints = boolean; Kde je logická je booleovská hodnota.
- Chcete-li zakázat
CHECKomezení, může to být kterékoli z následujících:falsenooff0
- Chcete-li aktivovat
CHECKomezení, může to být kterékoli z následujících:trueyeson1
Příklad
Nejprve vytvořte tabulku s CHECK omezení:
CREATE TABLE Products(
ProductId INTEGER PRIMARY KEY,
ProductName,
Price
CHECK (Price > 0)
);
Nyní můžeme přepnout CHECK omezení zapněte nebo vypněte podle potřeby k vynucení nebo nevynucení daného omezení.
Povolit omezení CHECK
Zde je příklad povolení všech CHECK omezení:
PRAGMA ignore_check_constraints = 0;
Jak již bylo zmíněno, jedná se o výchozí hodnotu. Pokud tedy nepoužíváte tento příkaz PRAGMA CHECK omezení již budou nastavena na tuto hodnotu.
Nyní to otestujeme CHECK omezení jsou ve skutečnosti povolena pokusem o vložení dat, která porušují CHECK omezení:
INSERT INTO Products VALUES
(NULL, 'Blue Widget', 0.00); Výsledek:
Error: CHECK constraint failed: Products
Takže CHECK omezení bylo vynuceno podle očekávání.
Zakázat omezení CHECK
Zde je příklad deaktivace všech CHECK omezení:
PRAGMA ignore_check_constraints = 1; Nyní zkusme znovu vložit stejná data a vybrat výsledek:
INSERT INTO Products VALUES
(NULL, 'Blue Widget', 0.00);
SELECT * FROM Products; Výsledek:
ProductId ProductName Price ---------- ----------- ---------- 1 Blue Widget 0.0
Jak se očekávalo, data se podařilo vstoupit do databáze, i když porušují CHECK omezení.