Le role de rollback?

yassine -  
jee pee Messages postés 41513 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonsoir,
je suis encore debutant en oracle et je ne sais pas plein de chose à propos de pl/sql....bon,pouvez vous m'expliquer le role de ROLLBACK ?
et dans quels cas on peut l'utiliser ?
et merci..

1 réponse

jee pee Messages postés 41513 Date d'inscription   Statut Modérateur Dernière intervention   9 716
 
Bonjour,

Quand en sql tu fais un update, il n'est pas automatiquement validé. Il est en attente. Pour valider ta mise à jour, tu vas lancer un ordre commit;

Si tu as fait une erreur dans ton update, par exemple tu attends 1 ligne mise à jour et cela en met à jour 100 000, donc ton code est mauvais, là plutôt que de valider par commit, tu vas faire rollback; (retour en arrière) pour invalider l'update, ta base n'est donc pas impactée. Là s'était pour du sql en direct.

Quand tu programmes, en plsql ou autre. Une "transaction", c'est un ensemble de mises à jour qui doivent toutes être effectuées pour que la base soit dans un état cohérent. Par exemple si tu ajoutes une commande, tu vas créer l'entête, créer les lignes, mettre à jour le stock des articles et mettre à jour le solde du compte client, donc plusieurs tables sont impactées. Dans ton programme tu vas donc définir une séquence qui comporte les ordres pour effectuer toutes ces mises à jour de la base. Si tout se passe bien, tu vas terminer par un commit. Mais supposons que lors de l’exécution des commandes sql tu rencontres une anomalie, et que bien sûr parce que tu programmes correctement, tu testes tous les codes retours, si l'une des commandes sql de ta "transaction" se passe mal (l'enregistrement n'existe plus, la base est pleine, ...) là (par exemple sur un sqlerror) tu vas lancer un rollback qui annule les mise à jour antérieures.

Cdlt

        un étranger, c'est un ami qu'on n'a pas encore rencontré.
0