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

Върнете списък с външни ключове в SQLite

В SQLite можете да използвате оператор PRAGMA, за да върнете списък с външни ключове за дадена таблица.

Синтаксис

Синтаксисът е така:

PRAGMA foreign_key_list(table-name);

Където table-name е името на таблицата, от която искате списъка с външни ключове.

Пример

Първо, нека създадем таблица с ограничение за външен ключ.

CREATE TABLE Types( 
    TypeId INTEGER PRIMARY KEY, 
    Type
);

CREATE TABLE Pets( 
    PetId INTEGER PRIMARY KEY, 
    PetName,
    TypeId,
    FOREIGN KEY(TypeId) REFERENCES Types(TypeId)
);

В този случай създадох две таблици. Домашни любимци таблицата има ограничение за външен ключ, което препраща към Типове таблица.

Сега мога да използвам PRAGMA foreign_key_list(table-name) изявление за извличане на този външен ключ.

.mode line
PRAGMA foreign_key_list(Pets);

Резултат (с помощта на вертикален изход):

      id = 0
      seq = 0
    table = Types
     from = TypeId
       to = TypeId
on_update = NO ACTION
on_delete = NO ACTION
    match = NONE

Този оператор PRAGMA връща осем колони, така че използвах .mode line за извеждане на резултатите вертикално. Това е така, за да не се налага да превъртате настрани.

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

Без чужди ключове

Ето какво се случва, ако изпълня същия оператор PRAGMA на таблица без никакви външни ключове.

PRAGMA foreign_key_list(Types);

Резултат (с помощта на вертикален изход):

 

(Това е празно, защото няма външни ключове.)

Върнете изразите CREATE TABLE

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

.mode column
SELECT sql 
FROM sqlite_master 
WHERE sql LIKE('%REFERENCES%');

Резултат:

CREATE TABLE Pets( 
    PetId INTEGER PRIMARY KEY, 
    PetName,
    TypeId,
    FOREIGN KEY(TypeId) REFERENCES Types(TypeId)
)

В този случай базата данни съдържа само един външен ключ (този, който създадох за този пример). Ако имаше повече, CREATE TABLE всички изявления ще бъдат изброени в тези резултати.


  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 DATEADD() Еквивалент

  3. Вмъкване в базата данни SQLite android

  4. Кога трябва да затворя курсор и db?

  5. Заявка за Android SQLite, където колоната не е нула и не е празна