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

Bestemmelse af OID for en tabel i Postgres 9.1?

For at få en tabel OID, cast til objektidentifikatortypen regclass (mens du er tilsluttet den samme DB):

SELECT 'mytbl'::regclass::oid;

Dette finder den første tabel (eller visning osv.) med det givne navn langs search_path eller rejser en undtagelse, hvis den ikke findes.

Skema-kvalificere tabelnavnet for at fjerne afhængigheden af ​​søgestien:

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

I Postgres 9.4 eller senere kan du også bruge to_regclass('myschema.mytbl') , som ikke rejser en undtagelse, hvis tabellen ikke findes:

  • Sådan kontrollerer du, om en tabel findes i et givet skema

Så behøver du kun at forespørge i katalogtabellen pg_attribute for eksistensen af ​​kolonnen:

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)


  1. Undtagelse:Der er allerede en åben DataReader tilknyttet denne forbindelse, som skal lukkes først

  2. MySQL OPDATERING og VÆLG i én gang

  3. pivottabel Oracle - hvordan man ændrer rækkeelementer til kolonner

  4. Sådan vises rækkeværdier som kolonner i MySQL