Могу ли я создать представление SQLite, объединяющее все базы данных? - PullRequest
1 голос
/ 31 декабря 2011

У меня есть базы данных, которые управляют файлами.Причина, по которой их несколько, заключается в том, что они живут на отдельных дисках (например, на USB-дисках).Я хочу написать запросы, которые применяются к файлам на всех дисках.Проблема в том, что я не могу снять представление, чтобы воссоздать его с другой базой данных (она используется).Поэтому мне было интересно, есть ли способ написать представление для объединения всех таблиц с одинаковыми именами в каждой из баз данных из .databases?Таким образом, когда присоединяется новая база данных, мне не нужно снимать представление.

Возможно, в качестве наиболее близкого ответа, можно ли написать триггер на ATTACH и заставить триггер воссоздать представление (вчтобы хотя бы минимизировать время простоя)?

1 Ответ

0 голосов
/ 03 января 2012

SQLite не поддерживает какие-либо известные мне триггеры «присоединения», только удаление, вставка и обновление.

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...