Dans SQLite, vous pouvez utiliser une instruction PRAGMA pour renvoyer une liste de clés étrangères pour une table donnée.
Syntaxe
La syntaxe ressemble à ceci :
PRAGMA foreign_key_list(table-name);
Où table-name
est le nom de la table dont vous voulez obtenir la liste des clés étrangères.
Exemple
Commençons par créer une table avec une contrainte de clé étrangère.
CREATE TABLE Types(
TypeId INTEGER PRIMARY KEY,
Type
);
CREATE TABLE Pets(
PetId INTEGER PRIMARY KEY,
PetName,
TypeId,
FOREIGN KEY(TypeId) REFERENCES Types(TypeId)
);
Dans ce cas, j'ai créé deux tables. Les animaux de compagnie table a une contrainte de clé étrangère qui fait référence aux Types tableau.
Maintenant, je peux utiliser le PRAGMA foreign_key_list(table-name)
pour récupérer cette clé étrangère.
.mode line
PRAGMA foreign_key_list(Pets);
Résultat (en utilisant la sortie verticale) :
id =0 seq =0 table =Types from =TypeId to =TypeIdon_update =NO ACTIONon_delete =NO ACTION match =NONE
Cette instruction PRAGMA renvoie huit colonnes, j'ai donc utilisé la ligne .mode line
pour afficher les résultats verticalement. C'est ainsi que vous n'avez pas à faire défiler latéralement.
Dans ce cas, il n'y a qu'une seule contrainte de clé étrangère sur la table. S'il y en avait plus, ils seraient listés dans les résultats.
Aucune clé étrangère
Voici ce qui se passe si j'exécute la même instruction PRAGMA sur une table sans aucune clé étrangère.
PRAGMA foreign_key_list(Types);
Résultat (en utilisant la sortie verticale) :
(Ceci est vide car il n'y a pas de clés étrangères.)
Renvoyer les instructions CREATE TABLE
L'instruction suivante peut être utilisée pour renvoyer le code SQL réel utilisé pour créer chaque table avec une clé étrangère.
.mode column SELECT sql FROM sqlite_master WHERE sql LIKE('%REFERENCES%');
Résultat :
CREATE TABLE Pets( PetId INTEGER PRIMARY KEY, PetName, TypeId, FOREIGN KEY(TypeId) REFERENCES Types(TypeId))Dans ce cas, la base de données ne contient qu'une seule clé étrangère (celle que j'ai créée pour cet exemple). S'il y en avait plus, le
CREATE TABLE
les déclarations seraient toutes répertoriées dans ces résultats.