2012-12-05 10 views
6

In questo momento ho questa dichiarazioneSQLite cancellare dal solo se la tabella esiste

DELETE FROM sqlite_sequence where name = 'table_name'; 

che funziona bene nella maggior parte dei casi, ma ora ho un caso in cui non viene creata la tabella sqlite_sequence e così ho tornare

no such table: sqlite_sequence 

Ho bisogno di una dichiarazione che esegue solo l'eliminazione se la tabella esiste. Ho trovato questa dichiarazione di dirmi se la tabella esiste o no

SELECT name FROM sqlite_master WHERE type='table'; 

Ma finora sono stato in grado di accoppiare con successo con l'eliminazione Satement

+0

Forse questo ti sarà utile. http://stackoverflow.com/questions/9803679/delete-row-if-table-exists-sql –

+0

ottimo link, ma sfortunatamente non vedo alcuna soluzione che funzioni con SQLite – lightswitch05

risposta

5

Il controllo tabella di esistenza dovrebbe includere il nome Naturalmente

SELECT count(*) FROM sqlite_master WHERE type='table' AND name='table_name'; 

Ma dovrete farlo dall'applicazione chiamata nel bilancio separato, cioè eseguire quanto sopra, e in base al conteggio (naturalmente 1 = true, 0 = false) come valore booleano, puoi procedere per eseguire il DELETE dichiarazione.

+1

Sebbene stavo cercando un modo per farlo in una singola affermazione, sto facendo di questa soluzione poiché non sembra che ci sia un modo in SQLite per farlo in una singola statistica – lightswitch05

+0

Puoi semplicemente usare 'SELECT 1 ...' invece di 'COUNT (*) ' –

Problemi correlati