2012-12-05 30 views
6

Ngay bây giờ tôi có tuyên bố nàySQLite xóa từ chỉ khi bảng tồn

DELETE FROM sqlite_sequence where name = 'table_name'; 

mà hoạt động tốt trong hầu hết các trường hợp, nhưng bây giờ tôi có một trường hợp bảng sqlite_sequence không được tạo ra và vì vậy tôi có được trở lại

no such table: sqlite_sequence 

Tôi cần tuyên bố chỉ xóa nếu bảng tồn tại. Tôi đã tìm thấy bản Tuyên Bố này để cho tôi biết nếu bảng tồn tại hay không

SELECT name FROM sqlite_master WHERE type='table'; 

Nhưng cho đến nay tôi đã không thể ghép thành công nó với satement xóa

+0

Có thể điều này sẽ hữu ích cho bạn. http://stackoverflow.com/questions/9803679/delete-row-if-table-exists-sql –

+0

liên kết tuyệt vời, nhưng tiếc là tôi không thấy bất kỳ giải pháp nào hoạt động với SQLite – lightswitch05

Trả lời

5

Vui lòng cung bảng tồn tại nên bao gồm tên Dĩ nhiên

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

Nhưng bạn sẽ phải làm điều đó từ các ứng dụng gọi điện thoại trong báo cáo riêng biệt, tức là chạy ở trên, và dựa vào số lượng (một cách tự nhiên 1 = true, 0 = false) là giá trị boolean, bạn có thể tiến hành chạy DELETE tuyên bố.

+1

Mặc dù tôi đang tìm cách để làm nó trong một tuyên bố duy nhất, tôi đang làm cho giải pháp này vì dường như không có cách nào trong SQLite để làm điều này trong một statment đơn lẻ – lightswitch05

+0

Bạn chỉ có thể sử dụng 'SELECT 1 ...' thay vì 'COUNT (*) ' –

Các vấn đề liên quan