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
CHECK
omezení, může to být kterékoli z následujících:false
no
off
0
- Chcete-li aktivovat
CHECK
omezení, může to být kterékoli z následujících:true
yes
on
1
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í.