PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

PostgreSQL:Buat tabel jika tidak ada AS

CREATE TABLE AS dianggap sebagai pernyataan terpisah dari CREATE TABLE normal, dan hingga Postgres versi 9.5 (lihat entri changelog) tidak mendukung IF NOT EXISTS ayat. (Pastikan untuk melihat versi manual yang benar untuk versi yang Anda gunakan.)

Meskipun tidak begitu fleksibel, CREATE TABLE ... LIKE sintaks mungkin menjadi alternatif dalam beberapa situasi; daripada mengambil strukturnya (dan isinya) dari SELECT pernyataan, itu menyalin struktur tabel atau tampilan lain.

Akibatnya, Anda dapat menulis sesuatu seperti ini (belum diuji); penyisipan terakhir adalah cara yang agak berantakan untuk tidak melakukan apa-apa jika tabel sudah diisi:

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

Atau, jika Anda ingin membuang data sebelumnya (misalnya tabel sementara yang ditinggalkan), Anda dapat menghapus tabel lama secara kondisional, dan membuat yang baru tanpa syarat:

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. Bagaimana cara mengembalikan hanya waktu kerja dari reservasi di PostgreSql?

  2. Postgres now() stempel waktu tidak berubah, saat skrip berfungsi

  3. Ubah bahasa sistem dan pesan kesalahan di PostgreSQL

  4. Jalankan kueri tab silang dinamis

  5. Pembaruan ke bidang JSON tidak bertahan ke DB