Ако някога трябва да активирате или деактивирате всички CHECK
ограничения в SQLite, можете да използвате ignore_check_constraints Изявление на PRAGMA.
Това изявление прагма изрично активира или деактивира прилагането на CHECK
ограничения. Настройката по подразбиране е изключена, което означава, че CHECK
ограниченията се прилагат по подразбиране.
Синтаксис
Синтаксисът е така:
PRAGMA ignore_check_constraints = boolean;
Където логично е булева стойност.
- За да деактивирате
CHECK
ограничения, това може да бъде някое от следните:false
no
off
0
- За да активирате
CHECK
ограничения, това може да бъде някое от следните:true
yes
on
1
Пример
Първо, нека създадем таблица с 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
ограничение.