Faire un Rollback Globale apres plusieur commit successif - SQL/NoSQL - Programmation
Marsh Posté le 27-10-2005 à 12:17:00
Non, ce n'est pas possble. Désolé.
Une solution consiste à faire une sauvegarde avant et une restitution après.
Une autre solution consiste à effectuer les tests péalables nécessaires pour ne pas s'engager dans un processus qui sera avorté.
Marsh Posté le 27-10-2005 à 16:48:15
ReplyMarsh Posté le 27-10-2005 à 21:37:20
Cependant, tu dois pouvoir revenir à un état précis de la base, en faisant appel à un DBA, mais ce n'est pas du SQL, ce sont des fonctionnalités Oracle, à prévoir.
(utile uniquement si ton process est particulier et effectué une seule fois, par exemple)
Marsh Posté le 28-10-2005 à 11:16:23
mon process sera lancé par un excecutable VB une fois par an. je vais donc faire via le prog VB, un dump de la base avant le process. et une fois le traitement terminé, j'afficherai un message utilisateur pour dire (traitement terminé avec erreur, voulez vous réinitialiser la base à l'état avant le traitement ....) et je ferai un import
Marsh Posté le 30-10-2005 à 11:05:55
Petite précision.
Oracle, comme beaucoup de sgbd, support les transactions imbriquées.
Donc en réalité, si, c'est tout à fait possible de faire un rollback après une série de commit.
Par contre, ça ne résoud pas le problème initial, puisque commiter une sous-transaction ne participe pas à réduire la taille du rollback segment.
Code :
|
Normalement, à quelques problèmes de syntaxe près, ça doit marcher.
Et on vois bien à quoi sert de faire deux transactions imbriquées.
Marsh Posté le 30-10-2005 à 11:48:36
On peut aussi faire sous Oracle :
SAVEPOINT <savepoint name>;
(...)
ROLLBACK TO <savepoint name>;
Assez pratique à l'usage, quand on veut faire des COMMIT tous les 1000 enregistrements, tout en gardant la possibilité d'annuler juste une partie des traitements.
Marsh Posté le 27-10-2005 à 11:31:43
bonjour,
je suis en train de créer un processus. C'est une procédure PL/SQL Oracle qui met a jour une volumétrie importante de données. Je suis par consequent obligé de faire des Commit régulièrement pour ne pas exploser les rollbacks segments.
Cépendant, je souhaiterais a la fin du processus, etre capable de faire un rollback général si tout ne s'est pas bien déroulé. Est ce possible?
merci pour les réponses
Message édité par molarisapa le 27-10-2005 à 12:19:32