PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Determinare l'OID di una tabella in Postgres 9.1?

Per ottenere un OID di tabella, esegui il cast al tipo di identificatore oggetto regclass (mentre connesso allo stesso DB):

SELECT 'mytbl'::regclass::oid;

Questo trova la prima tabella (o vista, ecc.) con il nome dato lungo il search_path o solleva un'eccezione se non trovata.

Schema-qualifica il nome della tabella per rimuovere la dipendenza dal percorso di ricerca:

SELECT 'myschema.mytbl'::regclass::oid;

In Postgres 9.4 o in seguito puoi anche usare to_regclass('myschema.mytbl') , che non genera un'eccezione se la tabella non viene trovata:

  • Come verificare se esiste una tabella in un determinato schema

Quindi devi solo interrogare la tabella del catalogo pg_attribute per l'esistenza della colonna:

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)