2010-02-19 21 views
5

Voglio eliminare tutte le tabelle che non hanno righe.Come eliminare tutte le tabelle vuote in SQLite?

Come eliminare tutte le tabelle vuote in SQLite?

EDIT
ho bisogno di fare questo su un telefono cellulare (senza guscio lì). Su un telefono Windows Mobile.

+1

Molto probabilmente può essere fatto nello script di shell o in perl. – Yada

+0

Ho bisogno di farlo su un telefono cellulare (nessun guscio lì). Su un telefono Windows Mobile. – Pentium10

+0

Abbiamo bisogno di sapere quali lingue sono disponibili (perchè non ne sono a conoscenza, comunque). –

risposta

7

Le tabelle possono essere eliminate, indipendentemente dal fatto che abbiano o meno dei dati al loro interno quando viene eseguito il comando. Non so di nessun database che operi diversamente. Quindi questo significa:

1) Ottenere un elenco delle tabelle -

SELECT name 
    FROM sqlite_master 
WHERE type = 'table' 

2) iterare quella lista, utilizzando COUNT (*) per determinare se sono presenti tutte le righe di una tabella:

SELECT COUNT(*) 
    FROM ~table 

3) Se il numero restituito è inferiore a 1, eseguire un'istruzione DROP:

DROP TABLE ~table 

SQLite non ha fu supporto di stored procedure o stored - dovrai farlo dalla tua applicazione.

+0

cos'è ~ prima che il nome della tabella sia valido? – Pentium10

+0

@ Pentium10: variabile psuedo. Se usassi '$', le persone potrebbero scambiarlo per una variabile PHP. '@' è la sintassi MySQL e SQL Server ... –

+0

@ Pentium10: È una trappola! – Hogan

Problemi correlati