sql >> Database teknologi >  >> RDS >> PostgreSQL

Hvordan udskifter jeg et bord i Postgres?

Enklere:

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

DROP TABLE erhverver en ACCESS EXCLUSIVE lås på bordet alligevel. En eksplicit LOCK kommando er ikke bedre. Og at omdøbe en død fyr er bare spild af tid.

Du vil måske skrive-låse den gamle tabel, mens du forbereder det nye, for at forhindre skriver imellem. Så vil du udstede en lås som denne tidligere i processen:

LOCK TABLE a IN SHARE MODE;

Hvad sker der med samtidige transaktioner, der forsøger at få adgang til bordet? Det er ikke så enkelt, læs dette:

Forklarer, hvorfor du muligvis har set fejlmeddelelser som denne:



  1. Opdater tabel i MySQL ved hjælp af python dict

  2. Kan ikke oprette forbindelse til nogen af ​​de angivne MySQL-værter

  3. Hvad er STATISTICS XML i SQL Server?

  4. Bedste og optimale måde at tilslutte sig max værdi fra andre tabeller