Documentation PostgreSQL 14.22 » Langage SQL » Contrôle d'accès simultané » Avertissements

Précédent | Niveau supérieur | Suivant
13.4. Vérification de cohérence des données au niveau de l'application | Sommaire | 13.6. Verrous et index

## 13.5. Avertissements

Certaines commandes DDL, actuellement seulement `TRUNCATE` et les formes d'`ALTER TABLE` qui réécrivent la table, ne sont pas sûres au niveau MVCC. Ceci signifie que, après la validation d'une troncature ou d'une réécriture, la table apparaîtra vide aux transactions concurrentes si elles utilisaient une image de la base datant d'avant la validation de la commande DDL. Ceci ne sera un problème que pour une transaction qui n'a pas encore accédé à la table en question avant le lancement de la commande DDL -- toute transaction qui a fait cela détiendra au moins un verrou de type `ACCESS SHARE` sur la table, ce qui bloquera la commande DDL jusqu'à la fin de la transaction. Donc ces commandes ne causeront pas d'incohérence apparente dans le contenu de la table pour des requêtes successives sur la table cible, mais elles seront la cause d'incohérence visible entre le contenu de la table cible et les autres tables de la base.

L'accès interne aux catalogues système n'est pas faite en utilisant le niveau d'isolation de la transaction actuelle. Ceci signifie que les objets de base nouvellement créés, comme des tables, sont visibles aux transactions concurrentes en Repeatable Read et en Serializable, même si les lignes qu'elles contiennent ne le sont pas. À l'inverse les requêtes qui examinent les catalogues systèmes ne voient pas les lignes représentant les objets créés en concurrence dans les plus haut niveaux d'isolation.