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.