Ако някога трябва да активирате или деактивирате всички CHECK ограничения в SQLite, можете да използвате ignore_check_constraints Изявление на PRAGMA.
Това изявление прагма изрично активира или деактивира прилагането на CHECK ограничения. Настройката по подразбиране е изключена, което означава, че CHECK ограниченията се прилагат по подразбиране.
Синтаксис
Синтаксисът е така:
PRAGMA ignore_check_constraints = boolean; Където логично е булева стойност.
- За да деактивирате
CHECKограничения, това може да бъде някое от следните:falsenooff0
- За да активирате
CHECKограничения, това може да бъде някое от следните:trueyeson1
Пример
Първо, нека създадем таблица с CHECK ограничение:
CREATE TABLE Products(
ProductId INTEGER PRIMARY KEY,
ProductName,
Price
CHECK (Price > 0)
);
Сега можем да превключваме CHECK включване или изключване на ограничения, както е необходимо, за да се наложи или не наложи това ограничение.
Активиране на ограниченията CHECK
Ето пример за активиране на всички CHECK ограничения:
PRAGMA ignore_check_constraints = 0;
Както споменахме, това все пак е стойността по подразбиране. Така че, ако не използвате този израз на PRAGMA CHECK ограниченията вече ще бъдат зададени на тази стойност.
Сега нека тестваме тази CHECK ограниченията всъщност са активирани чрез опит за вмъкване на данни, които нарушават това CHECK ограничение:
INSERT INTO Products VALUES
(NULL, 'Blue Widget', 0.00); Резултат:
Error: CHECK constraint failed: Products
Така че CHECK ограничението беше приложено според очакванията.
Деактивирайте ограниченията на CHECK
Ето пример за деактивиране на всички CHECK ограничения:
PRAGMA ignore_check_constraints = 1; Сега нека се опитаме да вмъкнем отново същите данни и да изберем резултата:
INSERT INTO Products VALUES
(NULL, 'Blue Widget', 0.00);
SELECT * FROM Products; Резултат:
ProductId ProductName Price ---------- ----------- ---------- 1 Blue Widget 0.0
Както се очакваше, данните успяха да влязат в базата данни, въпреки че нарушава CHECK ограничение.