При помощи метода
SQLConnection.attach()
можно открыть подключение к дополнительной базе данных, применив его к экземпляру
SQLConnection
, который уже имеет открытую базу данных. Добавленной базе данных можно присвоить имя при помощи параметра name в вызове метода
attach()
. При создании инструкций для выполнения операций над этой базой данных можно использовать это имя в префиксе (в форме
database-name.table-name
) для квалификации имен таблиц в инструкциях SQL, показывая среде выполнения, что эту таблицу можно найти в указанной базе данных.
Можно выполнить одну инструкцию SQL, в которую включены таблицы из нескольких баз данных, подключенных к одному и тому же экземпляру SQLConnection. Если транзакция создана с использованием экземпляра SQLConnection, эта транзакция применяется ко всем инструкциям SQL, выполняемым с использованием этого экземпляра SQLConnection. Это правило действует независимо от того, в отношении какой из добавленных баз данных выполняется инструкция.
Вместо этого можно создать несколько экземпляров SQLConnection в приложении, каждый из которых будет подключен к одной или к нескольким базам данных. Однако при использовании нескольких подключений к одной и той же базе данных следует иметь в виду, что транзакция базы данных не является общей для экземпляров SQLConnection. Следовательно, при подключении к одной базе данных нескольких экземпляров SQLConnection нельзя рассчитывать на то, что изменения данных обоих подключений будут применены необходимым образом. Например, если две инструкции
UPDATE
или
DELETE
выполняются в отношении одной базы данных с использованием различных экземпляров SQLConnection, и во время первой операции возникает ошибка приложения, данные базы данных могут остаться в необратимом промежуточном состоянии, что может нарушить целостность базы данных (и, следовательно, приложения).