sql >> Databáze >  >> RDS >> PostgreSQL

Jak nahradím tabulku v Postgresu?

Jednodušší:

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

DROP TABLE získává ACCESS EXCLUSIVE stejně zamknout na stůl. Explicitní LOCK velení není o nic lepší. A přejmenování mrtvého chlapa je jen ztráta času.

Při přípravě můžete starou tabulku uzamknout proti zápisu nové, aby se zabránilo zápisům mezi nimi. Pak byste dříve v procesu vydali takový zámek:

LOCK TABLE a IN SHARE MODE;

Co se stane se souběžnými transakcemi pokoušejícími se o přístup k tabulce? Není to tak jednoduché, přečtěte si toto:

Vysvětluje, proč se vám mohly zobrazit chybové zprávy, jako je tato:



  1. Jak FROM_UNIXTIME() funguje v MariaDB

  2. Pokud neexistuje, selže na SQL CE

  3. Fabric a Sudo jako další uživatel

  4. Vysvětlení funkce MySQL IF().