Di SQLite, Anda dapat menggunakan pernyataan PRAGMA untuk mengembalikan daftar kunci asing untuk tabel tertentu.
Sintaks
Sintaksnya seperti ini:
PRAGMA foreign_key_list(table-name);
Dimana table-name
adalah nama tabel yang Anda inginkan dari daftar kunci asing.
Contoh
Pertama, mari buat tabel dengan batasan kunci asing.
CREATE TABLE Types(
TypeId INTEGER PRIMARY KEY,
Type
);
CREATE TABLE Pets(
PetId INTEGER PRIMARY KEY,
PetName,
TypeId,
FOREIGN KEY(TypeId) REFERENCES Types(TypeId)
);
Dalam hal ini saya membuat dua tabel. Hewan peliharaan tabel memiliki batasan kunci asing yang mereferensikan Jenis tabel.
Sekarang saya dapat menggunakan PRAGMA foreign_key_list(table-name)
pernyataan untuk mengambil kunci asing itu.
.mode line
PRAGMA foreign_key_list(Pets);
Hasil (menggunakan keluaran vertikal):
id = 0 seq = 0 table = Types from = TypeId to = TypeId on_update = NO ACTION on_delete = NO ACTION match = NONE
Pernyataan PRAGMA ini mengembalikan delapan kolom, jadi saya menggunakan .mode line
untuk menampilkan hasil secara vertikal. Ini agar Anda tidak perlu menggulir ke samping.
Dalam hal ini hanya ada satu batasan kunci asing di atas meja. Jika ada lebih banyak, mereka akan terdaftar dalam hasil.
Tidak Ada Kunci Asing
Inilah yang terjadi jika saya menjalankan pernyataan PRAGMA yang sama pada tabel tanpa kunci asing.
PRAGMA foreign_key_list(Types);
Hasil (menggunakan keluaran vertikal):
(Ini kosong karena tidak ada kunci asing.)
Mengembalikan Pernyataan CREATE TABLE
Pernyataan berikut dapat digunakan untuk mengembalikan kode SQL aktual yang digunakan untuk membuat setiap tabel dengan kunci asing.
.mode column
SELECT sql
FROM sqlite_master
WHERE sql LIKE('%REFERENCES%');
Hasil:
CREATE TABLE Pets( PetId INTEGER PRIMARY KEY, PetName, TypeId, FOREIGN KEY(TypeId) REFERENCES Types(TypeId) )
Dalam hal ini database hanya berisi satu kunci asing (yang saya buat untuk contoh ini). Jika ada lebih banyak, CREATE TABLE
pernyataan semua akan tercantum dalam hasil ini.