SQLite
 sql >> Baza danych >  >> RDS >> SQLite

Zwróć listę kluczy obcych w SQLite

W SQLite możesz użyć instrukcji PRAGMA, aby zwrócić listę kluczy obcych dla danej tabeli.

Składnia

Składnia wygląda tak:

PRAGMA foreign_key_list(table-name);

Gdzie table-name to nazwa tabeli, z której chcesz uzyskać listę kluczy obcych.

Przykład

Najpierw utwórzmy tabelę z ograniczeniem klucza obcego.

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

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

W tym przypadku stworzyłem dwie tabele. Zwierzęta tabela ma ograniczenie klucza obcego, które odwołuje się do Typów tabela.

Teraz mogę użyć PRAGMA foreign_key_list(table-name) oświadczenie, aby pobrać ten klucz obcy.

.mode line
PRAGMA foreign_key_list(Pets);

Wynik (przy użyciu wyjścia pionowego):

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

Ta instrukcja PRAGMA zwraca osiem kolumn, więc użyłem .mode line aby wyświetlić wyniki w pionie. Dzięki temu nie musisz przewijać na boki.

W tym przypadku w tabeli jest tylko jedno ograniczenie klucza obcego. Gdyby było ich więcej, zostałyby wymienione w wynikach.

Brak kluczy obcych

Oto, co się stanie, jeśli uruchomię tę samą instrukcję PRAGMA na stole bez żadnych kluczy obcych.

PRAGMA foreign_key_list(Types);

Wynik (przy użyciu wyjścia pionowego):

 

(To pole jest puste, ponieważ nie ma kluczy obcych).

Zwróć instrukcje CREATE TABLE

Poniższej instrukcji można użyć do zwrócenia rzeczywistego kodu SQL użytego do utworzenia każdej tabeli z kluczem obcym.

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

Wynik:

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

W tym przypadku baza danych zawiera tylko jeden klucz obcy (ten, który stworzyłem dla tego przykładu). Gdyby było ich więcej, CREATE TABLE wszystkie stwierdzenia zostaną wymienione w tych wynikach.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wybierz wiele kolumn z dwóch tabel za pomocą greendao

  2. Data i godzina SQLite

  3. Jak uzyskać maksymalną wartość liczby całkowitej typu kolumny przechowywanej jako tekst typu w tabeli sqlite?

  4. Wyświetl zawartość pliku bazy danych w Android Studio

  5. SQLiteException przy użyciu WHERE +KEY_Date+='+data+'