2012-12-05 17 views
6

Teraz mam to stwierdzenieSQLite usunąć z tylko wtedy, gdy istnieje tabela

DELETE FROM sqlite_sequence where name = 'table_name'; 

który działa dobrze w większości przypadków, ale teraz mam przypadek, w którym stół sqlite_sequence nie jest tworzony i tak wrócę

no such table: sqlite_sequence 

Potrzebuję instrukcji, która usuwa tylko wtedy, gdy tabela istnieje. Znalazłem to stwierdzenie mi powiedzieć, czy tabela istnieje, czy nie

SELECT name FROM sqlite_master WHERE type='table'; 

Ale do tej pory byłem w stanie skutecznie powiązać go z kasowania satement

+0

Może to ci pomoże. http://stackoverflow.com/questions/9803679/delete-row-if-table-exists-sql –

+0

świetny link, ale niestety nie widzę żadnych rozwiązań, które działają z SQLite – lightswitch05

Odpowiedz

5

Kontrola istnienie tabela powinna zawierać imię i nazwisko oczywiście

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

Ale musisz to zrobić z aplikacji wywołującej w jednostkowym sprawozdaniu, czyli uruchomić powyższym oraz na podstawie liczby (naturalnie 1 = prawda 0 = false) jako wartości logicznej, możesz przejść do uruchomienia DELETE oświadczenie.

+1

Chociaż szukałem sposobu na zrobienie w jednym stwierdzeniu, robię to jako rozwiązanie, ponieważ nie ma w SQLite sposobu na wykonanie tego w pojedynczej instrukcji – lightswitch05

+0

Możesz po prostu użyć 'SELECT 1 ...' zamiast 'COUNT (*) ' –

Powiązane problemy