RussianLDP Рейтинг@Mail.ru
WebMoney: 
WMZ Z294115950220 
WMR R409981405661 
WME E134003968233 
Visa 
4274 3200 2453 6495 

Small. Fast. Reliable.
Choose any three.
ATTACH DATABASE

1. Обзор

attach-stmt:

ATTACH DATABASE expr AS schema-name

expr:

ATTACH DATABASE добавляет другой файл базы данных к текущему соединению с базой данных. Файлы базы данных, которые были ранее приложены, могут быть удалены, используя DETACH DATABASE.

2. Детали

Имя файла для базы данных, которая будет добавлена, является значением выражения, которое происходит перед ключевым словом AS. Имя файла базы данных следует за той же самой семантикой, как аргумент имени файла в sqlite3_open() и sqlite3_open_v2(), специмя ":memory:" создает базу данных в памяти и пустую строку в новой временной базе данных. Аргумент имени файла может быть URI filename, если обработка URI filename позволяется на соединении с базой данных. Поведение по умолчанию: имена файлов URI отключены, однако это могло бы измениться в будущем выпуске SQLite, таким образом, разработчикам приложений рекомендуют планировать соответственно.

Имя, которое происходит после ключевого слова AS, является названием базы данных, используемой внутренне SQLite. Имена схемы 'main' и 'temp' относятся к главной базе данных и базе данных, используемой для временных таблиц. Главные базы данных и базы данных temp не могут быть приложены или отделены.

Таблицы в приложенной базе данных могут быть использованы синтаксисом schema-name.table-name. Если название таблицы уникально через все приложенные базы данных, то префикс schema-name не требуется. Если у двух или больше таблиц в различных базах данных есть то же самое имя, и префикс schema-name не используется в ссылке на таблицу, то выбрана таблица в базе данных, которая была добавлена последней.

Транзакции, включающие многократные приложенные базы данных, атомные, предполагая, что главная база данных не ":memory:" и journal_mode не WAL. Если главная база данных ":memory:" или journal_mode = WAL, транзакции продолжают быть атомными в каждом отдельном файле базы данных. Но если хост виснет посреди COMMIT, где два или больше файла базы данных обновляются, некоторые из тех файлов могли бы получить изменения, а другие нет.

Есть предел, используя sqlite3_limit() и SQLITE_LIMIT_ATTACHED, количества баз данных, которые могут одновременно быть присоединены к связи единой базы данных.