sql >> Base de Datos >  >> RDS >> PostgreSQL

¿Cómo reemplazo una tabla en Postgres?

Más simple:

BEGIN;
DROP TABLE a;
ALTER TABLE a1 RENAME TO a;
COMMIT;

DROP TABLE adquiere un ACCESS EXCLUSIVE bloqueo en la mesa de todos modos. Un LOCK explícito el comando no es mejor. Y renombrar a un tipo muerto es solo una pérdida de tiempo.

Es posible que desee bloquear la escritura de la tabla anterior mientras prepara el nuevo, para evitar escrituras en el medio. Entonces emitiría un candado como este antes en el proceso:

LOCK TABLE a IN SHARE MODE;

¿Qué sucede con las transacciones simultáneas que intentan acceder a la tabla? No es tan simple, lee esto:

Explica por qué puede haber visto mensajes de error como este: