Vérification de la persistence des données au niveau application

Parce que les lecteurs dans Postgres ne verrouillent pas les données, en ne considérant pas le niveau d'isolation de transaction, les données lues par une transaction peuvent être écrasées par une autre. En d'autres termes, si une ligne est renvoyée par SELECT il n'y a pas moyen que cette ligne existe au moment où elle est retournée (i.e. quelque fois après le début de la transaction ou de la clause) ni que cette ligne soit protégée de la suppression ou de la mise à jour par des transactions concurrentes avant que la transaction en cours fasse une validation ou une annulation.

Pour s'assurer de l'existance de la ligne et la protéger contre les mises à jour concurrentes on doit utiliser SELECT FOR UPDATE ou un clause LOCK TABLE appropriée. Ce pourrait être le cas lors du portage d'applications utilisant le mode sérialisable vers Postgres depuis un autre environnement.

Note

Avant la version 6.5 de Postgres utilisait des verrous de lecture, c'est aussi le cas lorsque vous faites une mise à jour vers la version 6.5 (ou supérieure) de Postgres à partir d'une version antérieure.