Menentukan Kewujudan Jadual dalam Skema PostgreSQL
Pangkalan data PostgreSQL sering menggunakan skema, termasuk skema awam dan skema tersuai untuk organisasi yang berbeza. Ini memerlukan kaedah yang boleh dipercayai untuk mengesahkan kehadiran jadual dalam skema tertentu.
Batasan Skema Maklumat
Walaupun skema maklumat menawarkan paparan jadual pangkalan data, ia terhad kepada jadual yang boleh diakses oleh pengguna semasa. Had ini boleh menghasilkan negatif palsu. Pertanyaan berikut, menggunakan skema maklumat, mungkin tidak menggambarkan kewujudan jadual dengan tepat:
SELECT EXISTS ( SELECT FROM information_schema.tables WHERE table_schema = 'schema_name' AND table_name = 'table_name' );
Kaedah Boleh Dipercayai Menggunakan Katalog Sistem
Untuk semakan yang lebih komprehensif, manfaatkan katalog sistem PostgreSQL. Pertanyaan di bawah menggunakan pg_class
dan pg_namespace
untuk menentukan dengan pasti sama ada jadual wujud, tanpa mengira kebenaran pengguna:
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' -- only tables );
Pertanyaan ini mengembalikan true
jika jadual wujud.
Jenis Casting untuk Pengesahan Kewujudan Jadual
Teknik lain melibatkan menghantar pengecam jadual kepada jenis regclass
. Pelakon yang berjaya membayangkan kewujudan jadual; kegagalan mengakibatkan pengecualian.
SELECT 'schema_name.table_name'::regclass;
Menggunakan to_regclass
(PostgreSQL 9.4 dan lebih baru)
Untuk PostgreSQL 9.4 dan versi seterusnya, fungsi to_regclass
menyediakan penyelesaian yang lebih mantap. Ia mengembalikan NULL
jika jadual tiada, mengelakkan pengecualian:
SELECT to_regclass('schema_name.table_name');
Atas ialah kandungan terperinci Bagaimana untuk Memeriksa Kebolehpercayaan Jadual dalam Skema PostgreSQL Tertentu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!