2009-10-19 24 views
7

Desidero accedere a tutte le viste particolari di una determinata tabella in Sqlite. So che posso ottenere l'elenco di tutte le tabelle disponibili nel database utilizzando sqlite_masterCome posso elencare tutte le viste disponibili di una particolare tabella in SQLite?

SELECT name from sqlite_master WHERE type='table'; 

E l'elenco di tutti i punti di vista disponibili utilizzando

SELECT name from sqlite_master WHERE type ='view'; 

Ma voglio trovare tutte le viste disponibili per una tabella particolare Come lo faccio ?

risposta

1

Utilizzare la funzione charindex in extension-functions.c per cercare la colonna Sql in sqlite_master per il nome della tabella.

estensione-functions.c (guarda il fondo this page) è un modulo contributo degli utenti che fornisce funzioni di estensione matematiche e di stringa per query SQL, utilizzando il meccanismo estensioni caricabile.

Vostri criteri di finale dovrebbe essere qualcosa di simile (non testato):

SELECT name from sqlite_master 
    WHERE type ='view' AND charindex(Sql, "tableName") > 0; 
3

Non c'è bisogno di usare l'estensione-functions.c; basta usare l'operatore "LIKE":

SELECT name FROM sqlite_master WHERE type = 'view' and sql LIKE "%_tablename_%"; 

otterrete false corrispondenze, naturalmente, se si dispone di nomi di tabelle che contengono altri nomi di tabella come sottostringhe, o che sono sottostringhe di comuni SQL parole riservate (come "qui "o" rom "). È possibile eliminare il secondo dal seguente:

SELECT name FROM sqlite_master WHERE type = 'view' AND sql LIKE "% FROM %tablename% WHERE %"; 

fornire le viste che si sta cercando di trovare conformi al modello tipico.

Problemi correlati