Prostsze:
BEGIN;
DROP TABLE a;
ALTER TABLE a1 RENAME TO a;
COMMIT;
DROP TABLE
uzyskuje ACCESS EXCLUSIVE
i tak zablokuj na stole. Wyraźny LOCK
komenda nie jest lepsza. A zmiana nazwy zmarłego to tylko strata czasu.
Możesz zablokować starą tabelę podczas przygotowywania nowy, aby zapobiec zapisywaniu pomiędzy. Następnie na wcześniejszym etapie procesu należy wprowadzić taką blokadę:
LOCK TABLE a IN SHARE MODE;
Co się dzieje z równoczesnymi transakcjami próbującymi uzyskać dostęp do tabeli? To nie takie proste, przeczytaj to:
Wyjaśnia, dlaczego mogłeś zobaczyć takie komunikaty o błędach: