Chcete-li získat OID tabulky, přetypujte na typ identifikátoru objektu regclass
(při připojení ke stejné DB):
SELECT 'mytbl'::regclass::oid;
Toto najde první tabulku (nebo zobrazení atd.) s daným názvem podél search_path
nebo vyvolá výjimku, není-li nalezena.
Schema-kvalifikujte název tabulky pro odstranění závislosti na vyhledávací cestě:
SELECT 'myschema.mytbl'::regclass::oid;
V Postgres 9.4 nebo později můžete také použít to_regclass('myschema.mytbl')
, který nevyvolá výjimku, pokud tabulka není nalezena:
- Jak zkontrolovat, zda tabulka v daném schématu existuje
Poté stačí zadat dotaz na katalogovou tabulku pg_attribute
pro existenci sloupce:
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)