sql >> Database >  >> RDS >> PostgreSQL

De OID van een tabel in Postgres 9.1 bepalen?

Om een ​​tabel-OID te krijgen, cast naar het object-ID type regclass (terwijl verbonden met dezelfde database):

SELECT 'mytbl'::regclass::oid;

Dit vindt de eerste tabel (of weergave, enz.) met de opgegeven naam langs het search_path of genereert een uitzondering als deze niet wordt gevonden.

Schema-kwalificeer de tabelnaam om de afhankelijkheid van het zoekpad te verwijderen:

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

In Postgres 9,4 of later kunt u ook to_regclass('myschema.mytbl') . gebruiken , die geen uitzondering veroorzaakt als de tabel niet wordt gevonden:

  • Hoe te controleren of een tabel in een bepaald schema bestaat

Dan hoeft u alleen de catalogustabel pg_attribute . op te vragen voor het bestaan ​​van de kolom:

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. Hoe de SPACE()-functie werkt in SQL Server (T-SQL)

  2. Hoe tekst uit meerdere rijen samen te voegen tot een enkele tekenreeks in SQL Server

  3. Postgres Query Plan waarom rijschatting zo verkeerd is

  4. Oracle ISNULL() Equivalent