Communauté francophone de PostgreSQL

La communauté francophone de PostgreSQL

Outils pour utilisateurs

Outils du site


support:trucs_et_astuces:ne_faire_un_rollback_que_de_la_derniere_commande

Souvent vous devez des manipulations avec psql, probablement qu'en tant que personne prudente vous utilisiez cette commande

\set AUTOCOMMIT OFF

Le problème est que si vous tapez mal une commande, tout ce qui précédait sera perdu

exemple

 UPDATE TOTO set col1='Nouvelle valeur' where pk_toto=1;
 UPDATE TOTO set col1='Nouvelle valeur' where pk_toto=2;
insert into TOTO (pk_toto,col1) value (5,'Nouvelle ligne');

Si la dernière commande est incorrecte (et ici c'est le cas) les 2 commandes updates précédentes vont être annulées.

Pour évitez cela, faites en début de session(ou mettez-le dans votre psqlrc)

\set ON_ERROR_ROLLBACK ON
\set AUTOCOMMIT OFF

Ainsi seul la commande INSERT est annulé et les 2 commandes updates ne seront pas annulées, n'oubliez pas que les UPDATES ici ne seront sauvegardé que quand vous ferez un COMMIT

support/trucs_et_astuces/ne_faire_un_rollback_que_de_la_derniere_commande.txt · Dernière modification: 2010/12/06 14:06 de sparky