sql >> Databasteknik >  >> RDS >> PostgreSQL

Bestämma OID för en tabell i Postgres 9.1?

För att få en tabell OID, casta till objektidentifieraren typ regclass (medan du är ansluten till samma DB):

SELECT 'mytbl'::regclass::oid;

Detta hittar den första tabellen (eller vyn, etc.) med det angivna namnet längs search_path eller gör ett undantag om det inte hittas.

Schema-kvalificera tabellnamnet för att ta bort beroendet av sökvägen:

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

I Postgres 9.4 eller senare kan du också använda to_regclass('myschema.mytbl') , som inte ger upphov till ett undantag om tabellen inte hittas:

  • Hur man kontrollerar om en tabell finns i ett givet schema

Sedan behöver du bara fråga katalogtabellen pg_attribute för existensen av kolumnen:

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. Förstå kolumnalias i Select Query i SQL Server - SQL Server / TSQL självstudie del 115

  2. Denormalisering:När, varför och hur

  3. Skapar sammansatt primärnyckel i SQL Server

  4. Implementera en Multi-Datacenter Setup för PostgreSQL - Del två