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: