Firebird: ottenere l’elenco delle tabelle,viste e colonne


Scritto da Giovanni Bernardo in data 21 maggio 2009

Illustro in questo articolo delle Query per ottenere l’elenco dei nomi delle tabelle e delle colonne di un database Firebird. Alcune delle informazioni qui riportate le ho prese e tradotte dalle FAQ del sito ufficiale di Firebird alla pagina http://www.firebirdfaq.org/faq174/

Firebird, come altri database, ha delle tabelle di sistema dove memorizza vari parametri. Tutte le tabelle e le viste sono memorizzate nella tabella di sistema RDB$RELATIONS. Le tabelle e le viste di sistema hanno il flag RDB$SYSTEM_FLAG impostato, invece le tabelle e le viste definite dall’utente hanno questo flag impostato a NULL oppure a zero. Le viste si distinguono dalle tabelle dal momento che hanno impostato il flag RDB$VIEW_BLR. Le colonne delle tabelle e delle viste sono memorizzate nella tabella di sistema RDB$RELATION_FIELDS.

Passiamo a vedere le istruzioni SQL da fornire a Firebird per ottenere l’elenco delle tabelle,viste e colonne da noi create:

Elenco delle tabelle

SELECT rdb$relation_name
FROM rdb$relations
WHERE rdb$view_blr IS NULL
AND (rdb$system_flag IS NULL OR rdb$system_flag = 0);

Elenco delle viste

SELECT rdb$relation_name
FROM rdb$relations
WHERE rdb$view_blr IS NOT NULL
AND (rdb$system_flag IS NULL OR rdb$system_flag = 0);

Elenco delle tabelle con le relative colonne

SELECT f.rdb$relation_name, f.rdb$field_name
FROM rdb$relation_fields f
JOIN rdb$relations r ON f.rdb$relation_name = r.rdb$relation_name
AND r.rdb$view_blr IS NULL
AND (r.rdb$system_flag IS NULL OR r.rdb$system_flag = 0)
ORDER BY 1, f.rdb$field_position;

Elenco delle colonne di una data tabella

SELECT rdb$field_name
FROM rdb$relation_fields
WHERE rdb$relation_name='NOME_DELLA_TABELLA'

Articoli che potrebbero interessarti:

L'articolo ti è piaciuto o ti è stato utile per risolvere un problema? Supporta e mantieni in vita questo sito, ci basta soltanto un caffè o una birra

  1. Ancora nessun commento.
(non verrà pubblicata)
  1. Ancora nessun trackback

Fusion theme by digitalnature | Articoli (RSS) e Commenti (RSS) ^