PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

PostgreSQL:Tạo bảng nếu không tồn tại AS

CREATE TABLE AS được coi là một tuyên bố riêng biệt với một CREATE TABLE thông thường và cho đến phiên bản Postgres 9.5 (xem mục nhập bảng thay đổi) không hỗ trợ IF NOT EXISTS mệnh đề. (Đảm bảo xem đúng phiên bản hướng dẫn cho phiên bản bạn đang sử dụng.)

Mặc dù không hoàn toàn linh hoạt nhưng CREATE TABLE ... LIKE cú pháp có thể là một sự thay thế trong một số trường hợp; thay vì lấy cấu trúc (và nội dung) của nó từ SELECT , nó sao chép cấu trúc của một bảng hoặc dạng xem khác.

Do đó, bạn có thể viết một cái gì đó như thế này (chưa được kiểm tra); chèn cuối cùng là một cách khá lộn xộn để không làm gì nếu bảng đã được điền:

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

Ngoài ra, nếu bạn muốn hủy dữ liệu trước đó (ví dụ:một bảng tạm thời bị bỏ qua), bạn có thể hủy bỏ bảng cũ có điều kiện và tạo bảng mới vô điều kiện:

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. Các tính năng tương thích Oracle mới trong PostgresPlus Advanced Server 9.3Beta

  2. Nhận giá trị chung nhất cho mỗi giá trị của cột khác trong SQL

  3. Phát triển PostgreSQL cho Windows, Phần 1

  4. Sự trở lại của XFS trên Linux

  5. SQL SELECT tốc độ int so với varchar