For at få en tabel OID, cast til objektidentifikatortypen regclass
(mens du er tilsluttet den samme DB):
SELECT 'mytbl'::regclass::oid;
Dette finder den første tabel (eller visning osv.) med det givne navn langs search_path
eller rejser en undtagelse, hvis den ikke findes.
Skema-kvalificere tabelnavnet for at fjerne afhængigheden af søgestien:
SELECT 'myschema.mytbl'::regclass::oid;
I Postgres 9.4 eller senere kan du også bruge to_regclass('myschema.mytbl')
, som ikke rejser en undtagelse, hvis tabellen ikke findes:
- Sådan kontrollerer du, om en tabel findes i et givet skema
Så behøver du kun at forespørge i katalogtabellen pg_attribute
for eksistensen af kolonnen:
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)