2017-02-20 35 views
0

У нас есть несколько пар баз данных, которые связаны друг с другом, т.е.SQLite без основной базы данных?

  • db1a и db1b
  • DB2A и db2b
  • db3a и db3b
  • т.д.

где есть перекрестные db-соединения между db1a и db1b, 2a и 2b и т. д.

Наличие открытой базы данных sqlite ase, они могут быть прикреплены, то есть они могут быть прикреплены, т.е. могут быть прикреплены, т.е.

ATTACH 'db1a' as a; ATTACH 'db1b' as b; 

, а затем отсоединены и заменены другими парами при необходимости.

Как создать базу данных «соединение», однако, поскольку изначально нет реальной базы данных для присоединения? Использование первого в качестве основной базы данных дает гораздо большее значение, которое не имеет смысла - и поскольку оно не является съемным, это становится препятствием позже.

Единственный способ, который я вижу, - открыть :memory: или временное ('') подключение к базе данных. Есть ли лучший вариант?

ответ

1

В отсутствие лучшей альтернативы :memory: - лучший выбор. (:temp: - это нормальное имя файла и недопустимо во многих операционных системах: временная БД имеет пустое имя файла.)

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

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

+0

Спасибо за указание: temp: glitch - я имел в виду временную базу данных. Есть ли причина, почему изменение одной базы данных приведет к транзакции с несколькими базами данных? – Eiko

+1

В начале транзакции база данных не знает, будете ли вы делать изменения в других. В любом случае все должно быть заблокировано для сохранения атомарности. –

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

  • Нет связанных вопросов^_^