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

PostgreSQL:Създайте таблица, ако не съществува AS

CREATE TABLE AS се счита за отделно изявление от нормалното CREATE TABLE и до Postgres версия 9.5 (виж записа в регистъра на промените) не поддържа IF NOT EXISTS клауза. (Не забравяйте да погледнете правилната версия на ръководството за версията, която използвате.)

Въпреки че не е толкова гъвкав, CREATE TABLE ... LIKE синтаксисът може да бъде алтернатива в някои ситуации; вместо да вземе неговата структура (и съдържание) от SELECT оператор, той копира структурата на друга таблица или изглед.

Следователно, можете да напишете нещо подобно (непроверено); окончателното вмъкване е доста разхвърлян начин да не правите нищо, ако таблицата вече е попълнена:

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

Като алтернатива, ако искате да изхвърлите предишни данни (например изоставена временна таблица), можете условно да пуснете старата таблица и безусловно да създадете новата:

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. Как да намерите дублиращи се записи в PostgreSQL

  2. Функция за премахване на акценти в postgreSQL

  3. ГРЕШКА:разрешението е отказано за схемата user1_gmail_com на знак 46

  4. fe_sendauth:не е предоставена парола

  5. Postgresql рекурсивно самостоятелно присъединяване