По-просто:
BEGIN;
DROP TABLE a;
ALTER TABLE a1 RENAME TO a;
COMMIT;
DROP TABLE
придобива ACCESS EXCLUSIVE
така или иначе заключете на масата. Явно LOCK
командата не е по-добра. И преименуването на мъртъв човек е просто загуба на време.
Може да искате да запишете-заключите старата таблица, докато подготвяте новото, за да се предотврати запис между тях. Тогава бихте издали заключване като това по-рано в процеса:
LOCK TABLE a IN SHARE MODE;
Какво се случва с едновременни транзакции, опитващи се да получат достъп до таблицата? Не е толкова просто, прочетете това:
Обяснява защо може да сте виждали съобщения за грешка като това: