[PgAdmin 3] Gestion des transactions
Bonjour,
Je rencontre un petit soucis avec la gestion des transactions dans PgAdmin III.
La version que j'utilise est la dernière (1.10), sur un serveur Postgresql 8.3.7.
Voici le problème : quand je crée une transaction dans un script SQL sous PgAdmin, et que, par hasard ;), il y a une erreur dans une des lignes du script, PgAdmin procède à un ROLLBACK complet de la transaction depuis le début.
L'ajout de points de sauvegarde n'y change strictement rien...
Prenons un exemple simple :
Code:
1 2 3 4
| begin;
create temp table toto (id int);
insert into toto values (1);
select * from tot; -- là je fais une erreur |
Si je retente un :
Code:
select * from toto;
J'ai l'erreur suivante :
Citation:
ERROR: relation "toto" does not exist
********** Erreur **********
ERROR: relation "toto" does not exist
État SQL :42P01
Si j'ajoute un point de sauvegarde :
Code:
1 2 3 4 5 6 7
| begin;
create temp table toto (id int);
insert into toto values (1);
SAVEPOINT mon_pointdesauvegarde;
select * from tot;
select * from toto;
rollback to mon_pointdesauvegarde; |
Le rollback au point de sauvegarde renvoie l'erreur :
Citation:
ERROR: ROLLBACK TO SAVEPOINT can only be used in transaction blocks
********** Erreur **********
ERROR: ROLLBACK TO SAVEPOINT can only be used in transaction blocks
État SQL :25P01
Si j'exécute le même script en console psql, la restauration au point de sauvegarde fonctionne parfaitement, et ma table toto est toujours là.
D'où ma question : comment utiliser les points de sauvegarde dans PgAdmin ? Je me doute qu'il s'agit d'un problème de blocs de transaction, mais comment faire ?
Ca éviterait d'avoir à relancer des parties de traitements particulièrement longs quand on a une erreur un peu plus bas dans un gros script sous PgAdmin...
Merci d'avance de votre aide,
ced