sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur byter jag ut ett bord i Postgres?

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:



  1. MySQL :Flera rader som kommaseparerad en rad

  2. Hur delar man sträng och infogar den som ny rad i samma tabell?

  3. PHP - Visar urdu-text hämtad från MySQL DB

  4. Kontrollerar oracle sid och databasnamn