Question sur PL/SQL

Youhou !

J’ai un petit problème en PL/SQL: dans un examen, il y a une procédure PL/SQL qui insère un nouveau tuple dans une table.
Cette insertion “lance” un trigger SQL qui fait différentes choses suivant les valeurs de l’insertion.
C’est de là que vient le problème ! Le méchant professeur demande si cette procédure d’ajout est une procédure transactionnelle ! Si on donne la définition exacte d’une transaction, la réponse n’a plus rien à voir avec la question… Alors, je m’en remets à ceux qui pourraient s’y connaître en SQL. Ce serait sympa de m’expliquer comment on discerne une procédure transactionnelle. J’ai justement un exam’ demain, et je sens que le méchant professeur va demander exactement la même chose !

Voilà, merci d’avance !

Après chaque Commit (ou Rollback) Oracle lance une nouvelle transaction sinon la commande SET TRANSACTION permet de forcer le démarrage d’une transaction.

Autrement dit, à moins d’avoir changé le réglage par défaut d’oracle, ta procédure PL/SQL se trouve forcément dans une transaction comme toutes les autres commandes DML (Data Manipulation Language) qui suivront y compris celles exécutées dans le trigger qui va être déclenché par lors d’un évenement sur la table.

Le trigger faisant partie d’une transaction, c’est donc pour moi une procédure transactionnelle. D’ailleurs le déclenchement d’une exception dans un trigger peut amener à un Rollback de proche en proche, c’est une autre preuve qu’un trigger est une procédure transactionnelle.

Par contre, sous Oracle, les commandes DDL (Data Definition Language) ne sont pas transactionnelles (à moins que cela ait changé récemment).

Ce message a été édité par phili_b le 19/01/2004

Ok, merci beaucoup !

Je vais avoir du mal à rédiger tout ça sur ma feuille, mais au moins maitenant je sais ce que c’est !