Om een tabel-OID te krijgen, cast naar het object-ID type regclass
(terwijl verbonden met dezelfde database):
SELECT 'mytbl'::regclass::oid;
Dit vindt de eerste tabel (of weergave, enz.) met de opgegeven naam langs het search_path
of genereert een uitzondering als deze niet wordt gevonden.
Schema-kwalificeer de tabelnaam om de afhankelijkheid van het zoekpad te verwijderen:
SELECT 'myschema.mytbl'::regclass::oid;
In Postgres 9,4 of later kunt u ook to_regclass('myschema.mytbl')
. gebruiken , die geen uitzondering veroorzaakt als de tabel niet wordt gevonden:
- Hoe te controleren of een tabel in een bepaald schema bestaat
Dan hoeft u alleen de catalogustabel pg_attribute
. op te vragen voor het bestaan van de 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)