sql >> Database teknologi >  >> RDS >> PostgreSQL

PostgreSQL:Opret tabel, hvis den ikke eksisterer AS

CREATE TABLE AS betragtes som en separat erklæring fra en normal CREATE TABLE, og indtil Postgres version 9.5 (se changelog-indgang) understøttede ikke en IF NOT EXISTS klausul. (Sørg for at se den korrekte version af manualen for den version, du bruger.)

Selvom det ikke er helt så fleksibelt, er CREATE TABLE ... LIKE syntaks kan være et alternativ i nogle situationer; i stedet for at tage dens struktur (og indhold) fra en SELECT sætning, kopierer den strukturen af ​​en anden tabel eller visning.

Derfor kunne du skrive noget som dette (utestet); den sidste indsættelse er en ret rodet måde at gøre ingenting på, hvis tabellen allerede er udfyldt:

CREATE OR REPLACE VIEW source_data AS SELECT * FROM foo NATURAL JOIN bar;

CREATE TABLE IF NOT EXISTS snapshot LIKE source_data;

INSERT INTO snapshot
SELECT * FROM source_data
WHERE NOT EXISTS ( SELECT * FROM snapshot );

Alternativt, hvis du ønsker at kassere tidligere data (f.eks. en forladt midlertidig tabel), kan du betinget droppe den gamle tabel og ubetinget oprette den nye:

DROP TABLE IF EXISTS temp_stuff;

CREATE TEMPORARY TABLE temp_stuff AS SELECT * FROM foo NATURAL JOIN bar;


  1. Sådan sender du en POST-anmodning med formulardata og parametre i PL/SQL

  2. Skift til en partition i SQL Server (T-SQL)

  3. Hvorfor opretter postgres ikke databasen?

  4. Sådan fungerer RIGHT()-funktionen i MySQL