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;
その他の拡張