PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

PostgreSQL:Utwórz tabelę, jeśli nie istnieje AS

CREATE TABLE AS jest uważane za oddzielną instrukcję od normalnego CREATE TABLE i do wersji Postgres 9.5 (patrz wpis w dzienniku zmian) nie obsługuje IF NOT EXISTS klauzula. (Pamiętaj, aby zapoznać się z odpowiednią wersją instrukcji dla używanej wersji.)

Chociaż nie jest tak elastyczny, CREATE TABLE ... LIKE składnia może być alternatywą w niektórych sytuacjach; zamiast brać jego strukturę (i zawartość) z SELECT oświadczenie, kopiuje strukturę innej tabeli lub widoku.

W związku z tym możesz napisać coś takiego (nietestowane); ostatnie wstawienie jest dość niechlujnym sposobem na nicnierobienie, jeśli tabela jest już zapełniona:

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 );

Alternatywnie, jeśli chcesz odrzucić poprzednie dane (np. porzuconą tabelę tymczasową), możesz warunkowo usunąć starą tabelę i bezwarunkowo utworzyć nową:

DROP TABLE IF EXISTS temp_stuff;

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Opcjonalny argument w funkcji PL/pgSQL

  2. Dodawanie obiektu dict do postgresql

  3. Czy istnieje sposób na użycie tablic w Entity Framework + PostgreSql?

  4. Zmień typ pola varchar na integer:nie można automatycznie rzutować na typ integer

  5. Przyrostowa kopia zapasowa PostgreSQL i odzyskiwanie do określonego momentu