Mengesahkan Kewujudan Jadual Dalam Skema PostgreSQL Tertentu
Pangkalan data PostgreSQL menyusun jadual dalam skema. Untuk mengesahkan kehadiran jadual dalam skema yang ditetapkan, gunakan kaedah ini:
Kaedah 1: Pertanyaan Katalog Sistem Terus
Pendekatan ini secara langsung menyoal siasat pg_class
katalog sistem:
<code class="language-sql">SELECT EXISTS ( SELECT FROM pg_catalog.pg_class c JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace WHERE n.nspname = 'schema_name' AND c.relname = 'table_name' AND c.relkind = 'r' -- restricts to tables only );</code>
Kaedah 2: Pertanyaan Skema Maklumat (dengan kaveat)
Menggunakan information_schema
(cth., information_schema.tables
) nampaknya mudah, tetapi ambil perhatian: sekatan kebenaran mungkin membawa kepada negatif palsu. Kaedah ini berguna jika anda perlu mengesahkan akses untuk pengguna semasa:
<code class="language-sql">SELECT EXISTS ( SELECT FROM information_schema.tables WHERE table_schema = 'schema_name' AND table_name = 'table_name' );</code>
Kaedah 3: Taipkan Hantaran dengan regclass
Menghantar nama jadual yang layak skema kepada jenis regclass
mencetuskan pengecualian jika jadual itu tidak wujud. Ini mengelakkan kekaburan daripada pengecam dua petikan:
<code class="language-sql">SELECT 'schema_name.table_name'::regclass;</code>
Kaedah 4: to_regclass()
Fungsi (PostgreSQL 9.4 dan lebih baru)
Untuk PostgreSQL 9.4 dan versi seterusnya, fungsi to_regclass()
menyediakan penyelesaian yang lebih bersih. Ia mengembalikan NULL
jika objek tidak ditemui:
<code class="language-sql">SELECT to_regclass('schema_name.table_name');</code>
Pertimbangan Penting:
pg_class
atau to_regclass()
lebih disukai kerana skopnya yang lebih luas.search_path
tidak mempunyai kesan pada hasil apabila menggunakan pg_class
atau to_regclass()
.Atas ialah kandungan terperinci Bagaimanakah saya boleh menyemak sama ada Jadual Wujud dalam Skema PostgreSQL Tertentu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!