SQLite データベースのアタッチ
このような状況を想定します。同時に複数のデータベースが利用可能であり、そのいずれかを使用したいとします。SQLite のATTACH DATABASEATTACH DATABASE ステートメントは特定のデータベースを選択するために使用されます。このコマンドを使用すると、すべての SQLite ステートメントはアタッチされたデータベースに対して実行されます。
構文
SQLite の ATTACH DATABASE ステートメントの基本構文は次のとおりです:
ATTACH DATABASE file_name AS database_name;
データベースがまだ作成されていない場合、上記のコマンドはデータベースを作成します。データベースが既に存在する場合は、データベースファイル名を論理データベース 'Alias-Name' にバインドします。
開いているデータベースと ATTACH でアタッチされたデータベースは、同じフォルダー内に存在する必要があります。
例
既存のデータベースをアタッチしたい場合testDB.db、ATTACH DATABASE ステートメントは次のようになります:
sqlite> ATTACH DATABASE 'testDB.db' as 'TEST';
SQLite の.databaseコマンドを使用して、アタッチされたデータベースを表示します。
sqlite> .database seq name file --- --------------- ---------------------- 0 main /home/sqlite/testDB.db 2 test /home/sqlite/testDB.db
データベース名mainとtempは、メインデータベースと、一時テーブルおよびその他の一時データオブジェクトを格納するデータベースのために予約されています。これらの2つのデータベース名は各データベース接続で使用できますが、アタッチに使用すべきではありません。使用すると、次のような警告メッセージが表示されます:
sqlite> ATTACH DATABASE 'testDB.db' as 'TEMP'; Error: database TEMP is already in use sqlite> ATTACH DATABASE 'testDB.db' as 'main'; Error: database main is already in use;その他の拡張