2013-06-11 2 views
2

У меня есть функция, которая пытается сбросить представление и перестроить его всякий раз, когда к соединению добавляется новая база данных. Проблема (ну, скорее, досада) заключается в том, что в первый раз он пытается отказаться от несуществующего представления. Поскольку существует постоянная таблица с тем же именем, что и представление, я получаю ошибку sqlite: use DROP TABLE to delete table Albums. Поэтому я хотел бы запросить базу данных, чтобы проверить, существует ли представление, прежде чем пытаться ее удалить.Как перечислить временные таблицы/представления в SQLite?

Примечание: текущий запрос уже использует DROP VIEW IF EXISTS, и это не решает проблему. Кроме того, я проверил sqlite_master и, похоже, не было ссылок на временные таблицы/представления.

ответ

2

В main и temp базы данных различны, так что вы можете просто использовать имя базы данных:

CREATE TABLE Albums(x); 
CREATE TEMPORARY VIEW Albums AS SELECT * FROM Albums; 
DROP VIEW IF EXISTS temp.Albums; 
DROP VIEW IF EXISTS temp.Albums; 

Временные объекты are managed in sqlite_temp_master.

Смежные вопросы