Firebird: ottenere l’elenco delle tabelle,viste e colonne
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:
Indice dei contenuti
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' |