Cómo verificar si una tabla existe en un esquema dado
Postgres 8.4 y mayores bases de datos contienen tablas comunes enpublic
esquema y tablas específicas de la empresa encompany
esquema.company
los nombres de los esquemas siempre comienzan con'company'
y terminar con el número de la empresa.
Así que puede haber esquemas como:
public
company1
company2
company3
...
companynn
Una aplicación siempre funciona con una sola empresa.
lossearch_path
se especifica en consecuencia en la cadena de conexión odbc o npgsql, como:
search_path='company3,public'
¿Cómo verificarías si una tabla dada existe en un determinado?companyn
¿esquema?
p.ej:
select isSpecific('company3','tablenotincompany3schema')
debería regresarfalse
y
select isSpecific('company3','tableincompany3schema')
debería regresartrue
.
En cualquier caso, la función solo debe comprobar.companyn
esquema pasado, no otros esquemas.
Si existe una tabla dada en ambospublic
y el esquema pasado, la función debe devolvertrue
.
Debería funcionar para Postgres 8.4 o posterior.