Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#1 11/08/2009 16:43:34
- Jiff
- Membre
transactons dans une procédure stockée
Salut forumateurs,
J'ai beau creuser la doc de PG 8.4, je ne retrouve pas la page expliquant qu'on ne peut pas intégrer une transaction dans une procédure stockée.
Ai-je loupé la page en question, ou bien cette limitation a-t'elle été levée?
Hors ligne
#2 11/08/2009 16:55:30
- gleu
- Administrateur
Re : transactons dans une procédure stockée
Une procédure stockée est une transaction en elle-même. Donc pas de limitation.
Guillaume.
Hors ligne
#3 11/08/2009 16:55:53
- Marc Cousin
- Membre
Re : transactons dans une procédure stockée
Il n'y a pas d'autonomous transactions dans postgresql, si c'est bien la question. Par ailleurs chaque bloc begin/end est une sous transaction de la transaction en cours.
Dans les cas désespérés ça peut être fait avec une procédure par exemple en PLPerl qui ouvre une deuxième session. Mais ça me semble être à éviter dans la mesure du possible.
Marc.
Hors ligne
#4 11/08/2009 17:09:38
- Jiff
- Membre
Re : transactons dans une procédure stockée
Si je vous comprends bien tous les 2, l'appel d'une procédure stockée déclenche donc automatiquement une transaction, ce qui fait qu'il ne faut surtout pas en lancer une avant d'appeler la proc.
Je suppose logiquement qu'en cas de pépin, le rollback sera automatique (voire partiel si je passe par des savepoints), et que la seule trace apparente qu'il laissera au client sera le retour d'un message d'erreur indiquant la nature du pépin et le rollback?
Hors ligne
#5 11/08/2009 17:17:41
- gleu
- Administrateur
Re : transactons dans une procédure stockée
Pas de savepoint dans une procédure stockée, par contre, oui, le rollback est automatique en cas de pépin. Le seul moyen de récupérer, vu qu'il n'y a pas de savepoint, c'est de récupérer l'exception levée.
Guillaume.
Hors ligne
#6 11/08/2009 17:18:32
- Jiff
- Membre
Re : transactons dans une procédure stockée
Ok merci
Hors ligne
#7 11/08/2009 18:11:04
- Marc Cousin
- Membre
Re : transactons dans une procédure stockée
En fait, les savepoints sont faits automatiquement au début des blocs begin. Et le bloc est annulé par rollback to savepoint dans notre dos en cas d'exception interceptée, ou au savepoint du bloc appelant si on laisse se propager l'exception, etc…
Dernière modification par Marc Cousin (11/08/2009 18:11:21)
Marc.
Hors ligne
#8 11/08/2009 20:36:02
- Jiff
- Membre
Re : transactons dans une procédure stockée
Effectivement, vu le déroulement des opérations, c'est parfaitement logique que le savepoint soit global et propagé.
Hors ligne
Pages : 1