[ORACLE] Changer la table dont un trigger fait partie

Changer la table dont un trigger fait partie [ORACLE] - SQL/NoSQL - Programmation

Marsh Posté le 27-11-2018 à 14:18:46    

Bonjour à tou(te)s,
 
j'ai développé un petit outil qui me permet de changer la structure d'une table Oracle en renommant l'ancienne, en créant la nouvelle et en transférant les données de l'ancienne vers la nouvelle.
 
Ca fonctionne bien  :) .
 
En revanche, sur mon "Alter table ma_table rename to ma_table_ancienne", les triggers (traçabilité) se modifient et restent affectés à l'ancienne table (la valeur "ON ma_table" passe automatiquement à "ON ma_table_ancienne" )
 
Je pourrais les recréer depuis un script, mais il est impossible d'avoir 2 triggers de même nom sur des tables différentes, et le "create or replace" ne concerne manifestement que le body du trigger.
 
Donc, je n'ai pas d'autre choix, jusqu'à présent, que de supprimer avant de les recréer tous les triggers de toutes les tables dont je modifie la structure.
 
Ce qui est non seulement long, mais aussi plantogène...
 
Est-il possible d'intervenir dans le dictionnaire pour changer la table dont le trigger fait partie ?
 
Y-a-t'il une autre solution ?
 
Merci d'avance pour vos propositions et expériences.
 
Jérôme


Message édité par jized le 27-11-2018 à 16:24:36
Reply

Marsh Posté le 27-11-2018 à 14:18:46   

Reply

Marsh Posté le 28-11-2018 à 12:19:33    

Bonjour ! Le mieux est de générer le script SQL qui va faire les modifications, en récupérant les triggers associés à l'ancienne table (via la table USER_TRIGGERS) et en générant, pour chacun d'eux, la commande SQL.
 
Ou faire un script PL/SQL qui va exécuter les commandes construites à partir des éléments de cette table, mais cela revient, in fine, au même.
 
Bonne continuation.


---------------
On n'est jamais très fort pour ce calcul !
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed