Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Membuat Jadual PostgreSQL Dengan Selamat Tanpa Ralat Jadual Pendua?

Bagaimanakah Saya Boleh Membuat Jadual PostgreSQL Dengan Selamat Tanpa Ralat Jadual Pendua?

Patricia Arquette
Patricia Arquetteasal
2025-01-02 19:57:40255semak imbas

How Can I Safely Create PostgreSQL Tables Without Duplicate Table Errors?

PostgreSQL: Mengendalikan Penciptaan Jadual dengan "CREATE TABLE JIKA TIDAK WUJUD"

Dalam PostgreSQL, penggunaan "CREATE TABLE IF NOT EXISTS" membolehkan penciptaan jadual tanpa risiko penciptaan jadual pendua. Ciri ini telah diperkenalkan dalam PostgreSQL 9.1 dan memudahkan untuk mencipta jadual dengan cara yang memastikan ia wujud tanpa perlu menyemak kehadirannya secara manual.

Sintaks untuk PostgreSQL 9.1 dan Kemudian

Untuk mencipta jadual menggunakan "CREATE TABLE JIKA TIDAK WUJUD" dalam PostgreSQL 9.1 dan versi yang lebih baru, hanya nyatakan arahan seperti berikut:

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

Nota: Gantikan "myschema" dan "mytable" dengan skema dan nama jadual yang anda inginkan.

Penyelesaian untuk Versi Lama

Untuk PostgreSQL versi sebelum 9.1, fungsi penyelesaian boleh digunakan untuk mencapai fungsi yang serupa. Cipta fungsi berikut:

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

Panggil fungsi seperti yang diperlukan:

SELECT create_mytable();

Nota:

  • Lajur "schemaname " dan "tablename" dalam "pg_tables" ialah sensitif huruf besar dan kecil.
  • "pg_tables" hanya mengandungi jadual sebenar, bukan objek berkaitan.
  • Pertimbangkan untuk menggunakan "SECURITY DEFINER" jika peranan yang melaksanakan fungsi tidak mempunyai keistimewaan mencipta jadual.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membuat Jadual PostgreSQL Dengan Selamat Tanpa Ralat Jadual Pendua?. 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