Um eine Tabellen-OID zu erhalten, wandeln Sie sie in den Objektidentifizierertyp regclass
um (bei Verbindung mit derselben DB):
SELECT 'mytbl'::regclass::oid;
Dies findet die erste Tabelle (oder Ansicht usw.) mit dem angegebenen Namen entlang des search_path
oder löst eine Ausnahme aus, wenn sie nicht gefunden wird.
Schemaqualifizieren Sie den Tabellennamen, um die Abhängigkeit vom Suchpfad zu entfernen:
SELECT 'myschema.mytbl'::regclass::oid;
In Postgres 9.4 oder später können Sie auch to_regclass('myschema.mytbl')
verwenden , die keine Ausnahme auslöst, wenn die Tabelle nicht gefunden wird:
- Überprüfen, ob eine Tabelle in einem bestimmten Schema existiert
Dann brauchen Sie nur noch die Katalogtabelle pg_attribute
abzufragen für die Existenz der Spalte:
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)