Untuk mendapatkan tabel OID, cast ke tipe pengenal objek regclass
(saat terhubung ke DB yang sama):
SELECT 'mytbl'::regclass::oid;
Ini menemukan tabel pertama (atau tampilan, dll.) dengan nama yang diberikan di sepanjang search_path
atau memunculkan pengecualian jika tidak ditemukan.
Skema-kualifikasi nama tabel untuk menghapus ketergantungan pada jalur pencarian:
SELECT 'myschema.mytbl'::regclass::oid;
Di Postgres 9.4 atau nanti Anda juga dapat menggunakan to_regclass('myschema.mytbl')
, yang tidak memunculkan pengecualian jika tabel tidak ditemukan:
- Cara memeriksa apakah ada tabel dalam skema tertentu
Maka Anda hanya perlu query tabel katalog pg_attribute
untuk keberadaan kolom:
SELECT TRUE AS col_exists
FROM pg_attribute
WHERE attrelid = 'myschema.mytbl'::regclass
AND attname = 'mycol'
AND NOT attisdropped -- no dropped (dead) columns
-- AND attnum > 0 -- no system columns (you may or may not want this)