¿La tabla completa UPDATE(sin WHEREcláusula específica ) bloquea una tabla en PostgreSQL? Por ejemplo, ¿evita que las filas se eliminen / inserten?
Por ejemplo, si ejecuto
UPDATE t1 SET key = 'value'
¿Puedo esperar que no se inserten nuevas filas t1durante la UPDATEejecución?
Si no, ¿puedo esperar que UPDATEse actualicen incluso las filas que aparecieron después de su inicio? (la clave no tiene DEFAULT 'value'en su definición)
postgresql
locking
origaminal
fuente
fuente

UPDATEpuede implementar de tal manera para actualizar las filas recién insertadas.Respuestas:
Una ACTUALIZACIÓN sin una cláusula WHERE bloqueará todas las filas de la tabla, pero no bloqueará la tabla en sí para DML.
Las filas no se pueden eliminar de una transacción diferente porque están bloqueadas.
Pero puede insertar nuevas filas sin problemas (suponiendo que no violen ninguna restricción).
La fila UPDATE no verá ninguna fila que se inserte después de la ACTUALIZACIÓN y, por lo tanto, no se cambiará.
fuente
UPDATEsinWHERE.