sql >> Base de Datos >  >> RDS >> PostgreSQL

¿Determinando el OID de una tabla en Postgres 9.1?

Para obtener un OID de tabla, convierta al tipo de identificador de objeto regclass (mientras está conectado a la misma base de datos):

SELECT 'mytbl'::regclass::oid;

Esto encuentra la primera tabla (o vista, etc.) con el nombre dado a lo largo de search_path o genera una excepción si no se encuentra.

Esquema:califique el nombre de la tabla para eliminar la dependencia de la ruta de búsqueda:

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

En Postgres 9.4 o posterior, también puede usar to_regclass('myschema.mytbl') , que no genera una excepción si no se encuentra la tabla:

  • Cómo verificar si una tabla existe en un esquema dado

Entonces solo necesita consultar la tabla de catálogo pg_attribute por la existencia de la columna:

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)