grimboite/articles/dev/2015-01-13 foreign-key-depe...

1.7 KiB

Title Date Slug Tags
Dépendances sur une clé étrangère 2015-01-13 sql-foreign-key-dependencies sql, oracle

Dans un schéma relationnel, des champs d'une table A peuvent référencer l'enregistrement d'une table B grâce à une référence vers l'un de ses champs. Grâce au schéma de la table qui spécifie quels champs sont des clés étrangères, on peut facilement interroger les contraintes associées aux tables au travers d'une requête SQL, afin d'obtenir les relations inverses (ie. quels sont les tables qui référencent telle autre table?). Parmi les types de contraintes, on a ceux-ci:

  • C : Vérification d'une contrainte sur la table, par exemple que tel champ n'est pas nul.
  • P : Clé primaire
  • U : Clé unique
  • R : Clé étrangère
  • V : Vérification sur une vue
  • O : Lecture seule, sur une vue

La requête de base sur Oracle ressemble à ceci:

Select
  a.table_name "Referenced Table", b.table_name "Referenced By", a.*, b.*
  From all_constraints a
  Left Outer Join all_constraints b on a.constraint_name = b.r_constraint_name
  Order By a.table_name

Comme on ne fixe aucune condition, cela liste toutes les contraintes pour toutes les tables.

  • Le champ "Referenced Table" indique la table sur laquelle les contraintes s'applique
  • Le champ "Referenced By" indique la table référençant la première lorsqu'elle existe.
  • a.constraint_type indiquera le type de contrainte sur la table référencée
  • b.constraint_type sera d'office de type R

Sources