Rumah > pangkalan data > tutorial mysql > Bagaimanakah Saya Boleh Mencipta Jadual dalam PostgreSQL Hanya Jika Ia Belum Wujud?

Bagaimanakah Saya Boleh Mencipta Jadual dalam PostgreSQL Hanya Jika Ia Belum Wujud?

Susan Sarandon
Lepaskan: 2025-01-02 18:00:39
asal
403 orang telah melayarinya

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

Mencipta Jadual Secara Bersyarat dalam PostgreSQL

Dalam MySQL, sintaks CREATE TABLE JIKA TIDAK WUJUD membolehkan anda mencipta jadual hanya jika ia tidak' t sudah wujud. Ini menghalang penciptaan semula jadual secara tidak sengaja apabila menjalankan skrip beberapa kali.

PostgreSQL 9.1 dan Kemudian

PostgreSQL 9.1 memperkenalkan fungsi yang sama seperti MySQL:

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

Pra-PostgreSQL 9.1

Untuk versi PostgreSQL yang lebih lama, anda boleh menggunakan fungsi penyelesaian:

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

Panggil fungsi untuk mencipta jadual:

SELECT create_mytable();
Salin selepas log masuk

Nota:

  • Jadual pg_tables adalah sensitif huruf besar dan kecil.
  • Fungsi ini hanya menyemak jadual sebenar, bukan objek berkaitan.
  • Pertimbangkan untuk menggunakan kata kunci SECURITY DEFINER jika peranan pelaksana tidak mempunyai keistimewaan yang diperlukan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh 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