Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mencipta Jadual dalam PostgreSQL Hanya Jika Ia Belum Wujud?

Bagaimana untuk Mencipta Jadual dalam PostgreSQL Hanya Jika Ia Belum Wujud?

Mary-Kate Olsen
Lepaskan: 2024-12-30 15:02:10
asal
369 orang telah melayarinya

How to Create a Table in PostgreSQL Only If It Doesn't Already Exist?

Membuat Jadual dengan "CREATE TABLE JIKA TIDAK WUJUD" dalam PostgreSQL

Keupayaan untuk mencipta jadual hanya jika ia belum wujud ialah ciri yang berguna untuk memastikan jadual hanya dibuat sekali, walaupun skrip dijalankan beberapa kali.

Dalam MySQL, ciri ini boleh dilaksanakan menggunakan pernyataan:

CREATE TABLE IF NOT EXISTS foo ...;
Salin selepas log masuk

PostgreSQL

Dalam PostgreSQL versi 9.1 dan kemudian, sintaks "CREATE TABLE JIKA TIDAK WUJUD" ialah disokong:

CREATE TABLE IF NOT EXISTS myschema.mytable (i integer);
Salin selepas log masuk

Penyelesaian untuk Lebih Tua Versi

Untuk versi PostgreSQL sebelum 9.1, fungsi boleh digunakan untuk mencapai fungsi yang sama:

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$;
Salin selepas log masuk

Fungsi ini boleh dipanggil beberapa kali untuk mencipta jadual hanya jika ia tidak wujud.

Nota:

  • Fungsi create_mytable() mengandaikan bahawa jadual akan dibuat dalam skema myschema.
  • Jika pengguna yang melaksanakan fungsi ini tidak mempunyai keistimewaan yang diperlukan untuk mencipta jadual, atribut SECURITY DEFINER mungkin perlu digunakan untuk memastikan pelaksanaan yang berjaya.

Atas ialah kandungan terperinci Bagaimana untuk Mencipta Jadual dalam PostgreSQL Hanya Jika Ia Belum Wujud?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan