Enklare:
BEGIN;
DROP TABLE a;
ALTER TABLE a1 RENAME TO a;
COMMIT;
DROP TABLE
skaffar en ACCESS EXCLUSIVE
lås på bordet ändå. Ett explicit LOCK
kommandot är inte bättre. Och att byta namn på en död kille är bara ett slöseri med tid.
Du kanske vill skrivlåsa den gamla tabellen medan du förbereder det nya, för att förhindra skriver emellan. Då skulle du utfärda ett sådant lås tidigare i processen:
LOCK TABLE a IN SHARE MODE;
Vad händer med samtidiga transaktioner som försöker komma åt tabellen? Det är inte så enkelt, läs detta:
Förklarar varför du kan ha sett felmeddelanden som detta: