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

PostgreSQL buat tabel jika tidak ada

Fitur ini telah diterapkan di Postgres 9.1 :

CREATE TABLE IF NOT EXISTS myschema.mytable (i integer);

Untuk versi lama , berikut adalah fungsi untuk mengatasinya:

CREATE OR REPLACE FUNCTION create_mytable()
  RETURNS void
  LANGUAGE plpgsql AS
$func$
BEGIN
   IF EXISTS (SELECT FROM pg_catalog.pg_tables 
              WHERE  schemaname = 'myschema'
              AND    tablename  = 'mytable') THEN
      RAISE NOTICE 'Table myschema.mytable already exists.';
   ELSE
      CREATE TABLE myschema.mytable (i integer);
   END IF;
END
$func$;

Telepon:

SELECT create_mytable();        -- call as many times as you want. 

Catatan:

  • Kolom schemaname dan tablename di pg_tables peka huruf besar/kecil. Jika Anda mengutip dua kali pengidentifikasi di CREATE TABLE pernyataan, Anda harus menggunakan ejaan yang sama persis. Jika tidak, Anda perlu menggunakan string huruf kecil. Lihat:

  • Apakah nama kolom PostgreSQL peka huruf besar/kecil?

  • pg_tables hanya berisi tabel actual yang sebenarnya . Pengidentifikasi mungkin masih ditempati oleh objek terkait. Lihat:

  • Cara memeriksa apakah ada tabel dalam skema tertentu

  • Jika peran melaksanakan fungsi ini tidak memiliki hak istimewa yang diperlukan untuk membuat tabel yang mungkin ingin Anda gunakan SECURITY DEFINER untuk fungsi dan menjadikannya milik oleh peran lain dengan hak istimewa yang diperlukan. Versi ini cukup aman.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. STRING_AGG() Fungsi di PostgreSQL

  2. Mengapa postgres tidak membuat database?

  3. Fitur Baru Terbaik di PostgreSQL 14

  4. Kesalahan SYSCALL SSL Postgres:EOF terdeteksi dengan python dan psycopg

  5. Hak Istimewa PostgreSQL &Manajemen Pengguna - Yang Harus Anda Ketahui