¿La tabla completa UPDATE
(sin WHERE
clá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 t1
durante la UPDATE
ejecución?
Si no, ¿puedo esperar que UPDATE
se 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
UPDATE
puede 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
UPDATE
sinWHERE
.