SQLite
 sql >> база данни >  >> RDS >> SQLite

Как да активирате/деактивирате ограниченията на CHECK в SQLite

Ако някога трябва да активирате или деактивирате всички 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 ограничение.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да изброя името на таблицата от sqlite DB -- Android

  2. Изберете няколко колони от две таблици, като използвате greendao

  3. Как да извлечем изображение от база данни на SQLite?

  4. Копиране на sqlite в активи на android studio не работи

  5. Справяне с конфликти на първичен ключ при вмъкване на данни в SQLite