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

Как да активирате поддръжка на чужд ключ в SQLite

В SQLite ограниченията на външния ключ не се налагат, освен ако не е активирана поддръжка на външни ключове.

Активирането на външни ключове включва следното:

  1. Разрешаване на външни ключове при компилиране на SQLite.
  2. Активиране на външни ключове по време на изпълнение.

Активиране на външни ключове при компилиране на SQLite

Когато става въпрос за компилиране на SQLite, не е толкова въпрос на активиране външни ключове – това е по-скоро въпрос на не деактивиране тях.

Активирането на външни ключове при компилиране на SQLite просто означава, че не използвате SQLITE_OMIT_FOREIGN_KEY и SQLITE_OMIT_TRIGGER при компилирането му.

Ако SQLITE_OMIT_TRIGGER е дефиниран, но SQLITE_OMIT_FOREIGN_KEY не е, тогава дефинициите на външния ключ се анализират и могат да бъдат запитани с помощта на PRAGMA foreign_key_list , но ограниченията на външния ключ не се прилагат. PRAGMA foreign_keys командата е без операция в тази конфигурация.

Ако OMIT_FOREIGN_KEY е дефиниран, тогава дефинициите на външния ключ дори не могат да бъдат анализирани (опитът да се посочи дефиниция на външен ключ е синтактична грешка).

Активиране на външни ключове по време на изпълнение

Дори когато библиотеката е компилирана с разрешени ограничения на външния ключ, все още трябва да активирате поддръжката на външни ключове по време на изпълнение.

Можете да направите това със следния код:

PRAGMA foreign_keys = ON;

Както при повечето PRAGMA изрази, можете алтернативно да замените ON с TRUE , YES , или 1 .

След като го стартирате, външните ви ключове ще бъдат наложени.

Имайте предвид, че тази настройка не е необходима за създаване външни ключове, но е необходимо за налагане външни ключове.

Други връзки

Имайте предвид, че това позволява само ограничения на външния ключ за текущата връзка с базата данни.

Ако отворите нова връзка, ще трябва да изпълните този израз отново, ако искате външните ключове да бъдат наложени в тази връзка.

Проверете поддръжката на външни ключове за текущата връзка

Можете също да проверите дали външните ключове вече са активирани за текущата ви връзка, като изпълните следния код.

PRAGMA foreign_keys;

Резултат:

1

В моя случай вече съм активирал външни ключове за тази връзка, така че резултатът е 1. Ако външните ключове са били деактивирани, резултатът ще бъде 0.

Ето пример за деактивиране, проверка на стойността, след това активиране и повторна проверка на стойността.

PRAGMA foreign_keys = FALSE;
PRAGMA foreign_keys;
PRAGMA foreign_keys = YES;
PRAGMA foreign_keys;

Резултат:

sqlite> PRAGMA foreign_keys = FALSE;
sqlite> PRAGMA foreign_keys;
foreign_keys
------------
0           
sqlite> PRAGMA foreign_keys = YES;
sqlite> PRAGMA foreign_keys;
foreign_keys
------------
1           

  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 база данни

  2. SQLite DROP VIEW

  3. SQLite МЕЖДУ

  4. Къде Android съхранява версията на базата данни на SQLite?

  5. Как работи SQLite Random().