Précédent   Forum des professionnels en informatique > Bases de données > Oracle > Contribuez
Contribuez Proposez vos articles, cours, tutoriels, FAQ, sources, et autres ressources sur Oracle et ses technologies
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/12/2011, 15h00   #1
Rédacteur

 
Avatar de SheikYerbouti
 
Inscription : mai 2003
Messages : 6 530
Détails du profil
Informations forums :
Inscription : mai 2003
Messages : 6 530
Points : 6 460
Points : 6 460
Par défaut Comment afficher le graph hiérarchique des contraintes d'intégrité référentielles liées à une table

Bonjour,

Je vous propose un nouvel élément à utiliser : Comment afficher le graph hiérarchique des contraintes d'intégrité référentielles liées à une table

Souvent, lors de l'insertion ou de la suppression dans une table, l'on se demande quelles sont les contraintes d'intégrité référentielles (Foreign Keys) existantes entre les tables



Les scripts joints dans le fichier references.zip permettent d'afficher pour une table le graph des contraintes d'intégrité référentielles, et donc, de savoir quelles tables liées par des clés étrangères doivent être valorisées pour une insertion, et dans quel ordre supprimer les données lors d'une suppression



le script reference.sql accepte deux paramètres (nom de la table, nom du schéma) et peut être lancé depuis une icône du bureau avec la syntaxe suivante :

\sqlplusw.exe user/pwd@base @reference.sql nom_table nom_schema

où depuis Sql*Plus avec la syntaxe suivante ;

@reference.sql nom_table nom_schéma



Pour les amateurs d'objets stockés dans la base, le script P_TRACE_FK rend le même service, sous forme de procédure stockée.

Cette procédure est appelée avec les syntaxes suivantes :

P_TRACE_FK( nom_table, nom_schéma );

ou

P_TRACE_FK( nom_table ) ; (le user connecté est pris par défaut)

avec l'utilisation de la procédure stockée, le tampon d'affichage doit être préalablement initialisé avec la commande : SET SERVEROUTPUT ON



Voici un exemple de sortie :



Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
SQL*Plus: Release 9.2.0.1.0 - Production ON Sa Oct 23 14:59:24 2004 
 
Copyright (c) 1982, 2002, Oracle Corporation. ALL rights reserved. 
 
 
 
Connecté à : 
 
Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production 
 
WITH the Partitioning, OLAP AND Oracle DATA Mining options 
 
JServer Release 9.2.0.1.0 - Production 
 
 
 
-------------------------------------------------------------------- 
 
-- Contraintes d'intégrité référentielle de la Table : FD.LOV_LOV --
 
-------------------------------------------------------------------- 
 
LOV_LOV référencée par : 1 -> Item_Id.LOV_ITEM 
 
___ LOV_ITEM référencée par : 1 -> Module.LOV_BLOCK 
 
___ LOV_ITEM référencée par : 2 -> Bloc.LOV_BLOCK 
 
______ LOV_BLOCK référencée par : 1 -> Mod_Nom_Module.LOV_MODULE 
 
-------------------------------------------------------------------------------- 
 
LOV_LOV référence : 1 -> Id.LOV_COLONNE (NO ACTION) 
 
LOV_LOV référence : 1 -> Id.LOV_ELEMENT_COLONNE (NO ACTION)
 
 
 
Procédure PL/SQL terminée avec succès. 
 
 
 
SQL>


Où l'on voit clairement que pour supprimer une ligne dans la table LOV_MODULE il faut préalablement supprimer les fils de la table LOV_LOV puis ceux de la table LOV_ITEM puis ceux de la table LOV_BLOCK.

Et de la même façon, pour ajouter un enregistrement dans la table LOV_LOV, il faut qu'un parent existe dans la table LOV_ITEM, ayant elle-même un parent dans la table LOV_BLOCK elle-même fille de la table LOV_MODULE.

Qu'en pensez-vous ?
__________________
Rédacteur Oracle (Oracle ACE)
Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
Je ne réponds pas aux questions techniques par MP
Blogs: Forms-PL/SQL-J2EE - Forms Java Beans
SheikYerbouti est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h33.


 
 
 
 
Partenaires

Hébergement Web