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
Mary-Kate Olsenasal
2024-12-30 15:02:10387semak imbas

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

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

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

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!

Kenyataan:
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