web-dev-qa-db-fra.com

UPDATE sans clause WHERE verrouille-t-il une table dans PostgreSQL?

La table entière UPDATE (sans spécifier la clause WHERE) verrouille-t-elle une table dans PostgreSQL? Par exemple. cela empêche-t-il la suppression/l'insertion de lignes?

Par exemple. si je lance UPDATE t1 SET key = 'value' Puis-je m'attendre à ce qu'aucune nouvelle ligne ne soit insérée dans t1 pendant l'exécution de UPDATE?

Si non, puis-je m'attendre à ce que UPDATE mette à jour même les lignes apparues après son démarrage? (la clé n'a pas de DEFAULT 'value' dans sa définition)

9
origaminal

Un UPDATE sans clause WHERE verrouille toutes les lignes de la table, mais ne verrouille pas la table elle-même pour DML.

Les lignes ne peuvent pas être supprimées d'une autre transaction car elles sont verrouillées.

Mais vous pouvez insérer de nouvelles lignes sans problème (en supposant qu'elles ne violent aucune contrainte).

Toute ligne insérée après UPDATE ne sera pas vue par l'instruction UPDATE et ne sera donc pas modifiée.

15