|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Futur Membre du Club
![]() Inscription : mai 2005 Messages : 74 ![]() |
Salut à tous,
je veux supprimer les données dans une table (mère), dans les tables filles en dessous (117 au total) , dans les tables en dessous des filles et ainsi de suite ... A cause des clés etrangères, je dois commencer la suppression d'abord par le plus bas niveau (de l'arbre) pour remonter à la table mère. Car les contraintes clés etrangères n'ont pas été créées avec l'option CASCADE). j'utilise ORACLE 9i. Ma question: Comment faire pour avoir la liste des tables en dessous de la table mère (filles, filles des filles et ainsi de suite ....) afin de commencer la suppression des données par le bas. ou Y a-t-il une autre façon de faire? Merci d'avance |
|
|
00
|
|
|
#2 |
|
Invité régulier
![]() Inscription : mai 2004 Messages : 33 ![]() |
Bonjour,
Vous pourriez ecrire un TRIGGER au niveau ligne (for each rows before delete) sur la table mere, qui fait la suppression pour l'enregistrement en cours de toutes ces dependances dans les tables filles. Comme ca vous ne l'ecrivez qu'une fois et vous pourrez ensuite faire un delete from votreTableMere. COMMIT; ++ |
|
|
00
|
|
|
#3 |
|
Expert Confirmé
![]() Inscription : septembre 2004 Messages : 2 942 ![]() |
modifier les fk pour rajouter cascade me semble plus simple et plus sûr, non ?
|
|
|
00
|
|
|
#4 |
|
Futur Membre du Club
![]() Inscription : mai 2005 Messages : 74 ![]() |
Merci pour vos réponses.
Une autre préccupation En écrivant le trigger ou en modifiant la pk de la table mère, est qu'en appliquant le DELETE sur la table mère , la suppression s'appliquera sur les tables filles des filles? ou il faut écrire aussi le trigger ou modifier la pk pour les tables filles . Merci d'avance |
|
|
00
|
|
|
#5 | |
|
Membre Expert
![]() Inscription : juin 2007 Messages : 1 497 ![]() |
Citation:
Il faut aussi mettre les fk à "delete cascade" entre les filles et les filles des filles, etc ... récursivement Si ta hiérarchie est très complexe avec beaucoup de niveaux, tu peux tenter une requête récursive dans la vue sys.all_constraints pour lister toutes les tables filles de tous les niveaux qui sont rattachées à ta table mère |
|
|
|
00
|
|
|
#6 | |||
|
Expert Confirmé Sénior
![]() ![]() ![]() Laurent SchneiderAdministrateur de base de données Inscription : décembre 2005 Messages : 2 927 ![]() |
Citation:
![]() Non, delete cascade est sans doute avec les triggers l'une des choses que j'aime le moins, car on ne sait jamais ce que l'on fait. Pour avoir la liste des tables filles, je regarderais dans le dico. Ex: tables dont la mère est T1 Code :
|
|||
|
00
|
|
|
#7 |
![]() ![]() ![]() Inscription : mai 2003 Messages : 6 533 ![]() |
Comme ceci ?
__________________
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 |
|
|
00
|
|
|
#8 | ||
|
Expert Confirmé Sénior
![]() ![]() ![]() Laurent SchneiderAdministrateur de base de données Inscription : décembre 2005 Messages : 2 927 ![]() |
en fait c'est l'inverse, monthaldo voulait avec la table grand mère avoir toutes les filles et non depuis les filles avoir toutes les grand mères.
Ton script vérifie que C.TABLE_NAME <> NVL( LC$OldTable,'1' ), afin de ne pas boucler, mais avec T1(x primary key, y references T2) et T2(x reference T1, y primary key), ça boucle quand même. Et moi j'obtiens Code :
|
||
|
00
|
|
|
#9 |
![]() ![]() ![]() Inscription : mai 2003 Messages : 6 533 ![]() |
Sans dec ?!!! ils l'ont ablationné !???
__________________
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 |
|
|
00
|
|
|
#10 |
|
Expert Confirmé Sénior
![]() ![]() ![]() Laurent SchneiderAdministrateur de base de données Inscription : décembre 2005 Messages : 2 927 ![]() |
c'est clair, plus de sqlplusw ni de isqlplus.
Il reste sqlplus MS-DOS et sqldeveloper |
|
00
|
|
|
#11 |
![]() ![]() ![]() Inscription : mai 2003 Messages : 6 533 ![]() |
Ils poussent à la conso de Sql*Developer...
et comment y font les lignesdecommandiens ?
__________________
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 |
|
|
00
|
|
|
#12 |
|
Expert Confirmé Sénior
![]() ![]() ![]() Laurent SchneiderAdministrateur de base de données Inscription : décembre 2005 Messages : 2 927 ![]() |
j'ai discuté à OpenWorld avec Sue Harper, la cheffe de projet de SQL Developer, je lui ai demandé pourquoi ça s'appelait SQL Developer, si les DBA devaient aussi employer cet outil...
SQL Developer est plutôt pour les développeurs. Alors que nous reste-t-il? La commande DOS? Bon, de toute façon tout le monde est en USASCII7, donc pas de problème pour les accents |
|
00
|
|
|
#13 | |
|
Expert Confirmé
![]() Inscription : septembre 2004 Messages : 2 942 ![]() |
Citation:
|
|
|
|
00
|
|
|
#14 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
oui
![]() c'est à n'y rien comprendre dans la politique d'Oracle
|
|
|
00
|
|
|
#15 | |
|
Expert Confirmé
![]() Inscription : septembre 2004 Messages : 2 942 ![]() |
Citation:
Sous Linux/Unix, il n'y a pas de "x sqlplus", il n'y a que le programme console... ça uniformise, enlève une verrue qui en plus, n'était pas inoubliable ! |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com