Удалить существующую таблицу в SQLite, если оператор IF EXISTS не поддерживается - PullRequest
37 голосов
/ 09 сентября 2010

Моя версия SQLite не поддерживает оператор IF EXISTS. Как я могу отбросить таблицу, которая может существовать или не существовать, не получив сообщения об ошибке?

Я не могу обновить версию в реальном времени приложения, поэтому я не могу использовать версию SQLite, которая поддерживает IF EXISTS.

Ответы [ 4 ]

112 голосов
/ 29 ноября 2011

Вы можете использовать:

DROP TABLE IF EXISTS TABLE_NAME;
22 голосов
/ 09 сентября 2010

Официальная документация гласит, что использовать IF EXISTS, поэтому я подозреваю, что ваш лучший план - обновить.

Если вы не можете, вам нужно посмотреть, можете ли вы сделать что-нибудь тривиальноеоперация над таблицей, которая будет выполнена независимо от того, пуста ли таблица;если это удастся, вы должны удалить таблицу, в случае неудачи таблица уже исчезла.Примером операции, которую можно попробовать, может быть:

SELECT COUNT(*) FROM theTable;

Обратите внимание, что вам нужно отследить возможную ошибку от этого на уровне языка, и вы можете захотеть обернуть весь лот (пробник, ошибкаловушка, сбросить таблицу) в транзакции.Конечно, другой подход, если вы попадаете в обработку ошибок, это просто отбрасывать таблицу и все равно обрабатывать ошибку.

5 голосов
/ 01 февраля 2013

Просто используйте это.

DROP TABLE TABLE_NAME;
3 голосов
/ 09 сентября 2010

Вы можете каким-то образом использовать таблицу метаданных в своем запросе, чтобы узнать, существует ли таблица:

SELECT count(*) > 0 FROM sqlite_master where tbl_name = "<table_name>" and type="table"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...