English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

SQLite 附加データベース(ATTACH DATABASE)

複数のデータベースが利用可能で、そのうちの1つを使用したいという状況を考えてみましょう。SQLite ATTACH DATABASE特定のデータベースを選択するための文であり、このコマンドを実行すると、その後のすべてのSQLite文は接続されたデータベースの下で実行されます。

構文

以下はSQLite ATTACH DATABASE文の基本的な構文です。

ATTACH DATABASE 'DatabaseName' As 'Alias-Name';

データベースがまだ作成されていない場合、上記のコマンドはデータベースを作成することもあり、それともデータベースファイル名を「エイリアス」と呼ばれる論理データベースに接続するだけで、データベースが存在する場合はそれを接続するだけです。

オンラインサンプル

既存のデータベースを接続する場合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は、メインデータベースおよび一時テーブルや他の一時データオブジェクトを保持するためのデータベース予約名です。これらのデータベース名は各データベース接続に存在し、添付に使用されるべきではありません。そうしないと、以下の警告メッセージを受け取ります。

sqlite> DATABASE 'testDB.db' ATTACH AS 'TEMP';
エラー: データベース TEMP は既に使用されています
sqlite> DATABASE 'testDB.db' ATTACH AS 'main';
エラー: データベース TEMP は既に使用されています