Bonjour,
J'ai crée une procédure qui permet de faire des 'alter' sur des tables , est ce qu'il y a moyen d'annuler tout ce qui a été fait et revenir à l'état précédent avec une procédure ?
Bonjour,
J'ai crée une procédure qui permet de faire des 'alter' sur des tables , est ce qu'il y a moyen d'annuler tout ce qui a été fait et revenir à l'état précédent avec une procédure ?
Non, pas d'annulation possible sur les ordres de types DDL (Data Description Language), c'est-à-dire les ordres qui permettent de toucher à la structure des tables (CREATE, ALTER, DROP + TRUNCATE).
Cela n'est possible qu'avec les ordres de types DML (Data Manipulation Language), c'est-à-dire les ordres qui permettent d'accéder aux données des tables (SELECT, INSERT, UPDATE, DELETE).
Des chercheurs qui cherchent, on en trouve, mais des chercheurs qui trouvent, on en cherche !
Bonjour,
L'instruction FLASHBACK TABLE permet de restaurer une table à un instant déterminé, sous réserve que les données undo nécessaires n'aient pas expiré (vérifiez que le paramètre UNDO_RETENTION vous laisse suffisamment de temps pour agir), que la table ait l'option ENABLE ROW MOVEMENT, et bien sûr que l'utilisateur dispose des privilèges nécessaires.
Cependant, un moyen plus sûr serait de tout simplement de créer une copie de la table au début de la procédure qui modifie sa structure...
Sauf que la 2eme phrase de la doc est :
Also, Oracle Database cannot restore a table to an earlier state across any DDL operations that change the structure of the table.
Effectivement... J'avais fait le test pour annuler un ajout de colonne, et l'ordre s'était exécuté sans erreur (essayer d'annuler une suppression est au contraire immédiatement sanctionné d'un ORA-01466), mais la colonne existe encore. En revanche, ses valeurs avaient été remises à NULL, ce qui m'a induit en erreur. Enfin, c'est bien fait pour ma gueule, j'avais qu'à mieux regarder. Ou mieux lire la doc. J'en suis tout humilié et il va falloir que je boive pour oublier.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager