PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да заменя таблица в Postgres?

По-просто:

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

DROP TABLE придобива ACCESS EXCLUSIVE така или иначе заключете на масата. Явно LOCK командата не е по-добра. И преименуването на мъртъв човек е просто загуба на време.

Може да искате да запишете-заключите старата таблица, докато подготвяте новото, за да се предотврати запис между тях. Тогава бихте издали заключване като това по-рано в процеса:

LOCK TABLE a IN SHARE MODE;

Какво се случва с едновременни транзакции, опитващи се да получат достъп до таблицата? Не е толкова просто, прочетете това:

Обяснява защо може да сте виждали съобщения за грешка като това:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. psycopg2 :курсорът вече е затворен

  2. Създайте postgres docker контейнер с първоначална схема

  3. Обединете таблица и регистър на промените в изглед в PostgreSQL

  4. Как бързо да премахнете потребител със съществуващи привилегии

  5. Ред на логическа обработка или SQL стандарт в клаузата WHERE