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;