sql >> Database >  >> RDS >> PostgreSQL

Hoe vervang ik een tabel in Postgres?

Eenvoudiger:

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

DROP TABLE verwerft een ACCESS EXCLUSIVE slot op de tafel toch. Een expliciete LOCK bevel is niet beter. En het hernoemen van een dode is gewoon tijdverspilling.

Misschien wilt u de oude tabel tijdens het voorbereiden op slot zetten de nieuwe, om tussentijds schrijven te voorkomen. Dan zou je eerder in het proces een slot als dit uitgeven:

LOCK TABLE a IN SHARE MODE;

Wat gebeurt er met gelijktijdige transacties die toegang proberen te krijgen tot de tabel? Het is niet zo eenvoudig, lees dit:

Legt uit waarom u mogelijk de volgende foutmeldingen hebt gezien:



  1. Meerdere tabellen MySQL-query

  2. Hoe deze IP-naar-Locatie-opzoekquery optimaliseren?

  3. Een alias gebruiken in een WHERE-component

  4. update als er twee velden zijn, invoegen als dat niet het geval is (MySQL)