J'essaye de déboguer une application (sous PostgreSQL) et j'ai rencontré l'erreur suivante: "la transaction courante est annulée, les commandes ignorées". Autant que je puisse comprendre une «transaction» est juste une notion liée à la connexion de base de données sous-jacente.Transactions, quand il faut les supprimer
Si la connexion a une validation automatique "false", vous pouvez exécuter des requêtes via la même instruction tant qu'elle n'échoue pas. Dans ce cas, vous devriez revenir en arrière.
Si la validation automatique est "true", cela n'a pas d'importance tant que toutes vos requêtes sont considérées comme atomiques.
en utilisant l'auto commit faux, j'obtiens l'erreur ci-dessus par PostgreSQL, même si simple
select * from foo
échoue, ce qui me fait demander, en vertu de laquelle SQLException (s) est une « transaction » considérée comme non valide et devrait être rolled soutenu ou non utilisé pour une autre requête?
using MacOS 10.5, Java 1.5.0_16, PostgreSQL 8.3 with JDBC driver 8.1-407.jdbc3
Merci pour la clarification. J'ai fait quelques tests et j'ai découvert que lorsque la validation automatique est définie sur false * sous PostgreSQL * lorsqu'une exception se produit, vous * roll * rollback pour exécuter l'instruction suivante (vous pouvez réutiliser celle existante autant que je peux). Ce n'est pas * le cas de mySQL par exemple. – qnoid
Oui, voici comment cela fonctionne, je ne comprends pas encore ce qui est encore flou dans la réponse. Que je n'ai pas mentionné que ce n'est pas comme ça dans d'autres SGBD? Pourquoi cela serait-il pertinent? :)BTW, ce que vous devez faire est de terminer la transaction en cours ou d'obtenir un état enregistré non-erroné en elle. –