1.7 KiB
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éeb.constraint_type
sera d'office de typeR