2017-08-03 2 views
1

Wenn ich feststellen muss, ob eine bestimmte Tabelle eine Ansicht ist, kann ich dies mit einer Abfrage tun, anstatt '\ d' zu verwenden? Ich habe ein Skript, das mehrere Tabellen zum Löschen überprüfen muss, aber nicht alle manuell überprüfen möchte.SQL: Programmgesteuert ermitteln, ob Tabelle Sicht ist

Antwort

1

Sie könnten verwenden pg_class:

relkind char

r = gewöhnlicher Tisch, i = Index, S = Sequenz, v = Ansicht, m ​​= materialisierten Ansicht, c = Verbundtyp, t = TOAST Tabelle, f = Fremdtabelle

IF EXISTS (SELECT relname 
      FROM pg_class 
      WHERE relname='<object_name>' 
      AND relkind = 'v') 
THEN 
... 
1

Sie diese Informationen aus der information_schema.tables Ansicht finden:

select table_type 
from information_schema.tables 
where table_schema = 'my_schema' and table_name = 'my_table'` 

table_type Spalt Beschreibung:

Typ der Tabelle: Basistabelle für eine persistente Basistabelle (der normale Tabellentyp), Anzeigen für eine Ansicht, FOREIGN Tabelle für eine Fremdtabelle oder LOCAL TEMPORARY für eine temporäre Tabelle

Verwandte Themen