4D v16CREATE DATABASE |
||||||||||||||
|
4D v16
CREATE DATABASE
|
CREATE DATABASE [IF NOT EXISTS] DATAFILE <Complete pathname> |
||
CREATE DATABASEコマンドを使用して新しいエクスターナルデータベース (.4dbと.4dd ファイル) を指定した場所に作成できます。
IF NOT EXISTS制約が渡されていると、指定した場所に同じ名前のデータベースが存在すれば、データベースは作成されずエラーも生成されません。
IF NOT EXISTS制約が渡されていない場合、指定した場所に同じ名前のデータベースが既に存在すれば、データベースは作成されず、"データベースは既に存在します。CREATE DATABASEコマンドの実行に失敗しました。"エラーメッセージが表示されます。
DATAFILE句に新しいエクスターナルデータベースの完全名 (完全パス名 + 名前) を指定します。ストラクチャファイルの名前を渡さなければなりません。プログラムは (指定されていなければ) 自動で".4db"拡張子をファイルに追加し、データファイルを作成します。パス名はPOSIXシンタックスあるいはシステムシンタックスで指定します。また絶対、あるいはメインの4Dデータベースのストラクチャファイルからの相対で指定できます。
CREATE DATABASEコマンドの実行に成功しても、作成された新しいデータベースは自動ではカレントデータベースにはなりません。これを行うには、新しいUSE DATABASEコマンドを使用して明示的にカレントデータベースとして宣言しなければなりません。
エクスターナルデータベースとはメインの4Dデータベースから独立していますが、メインのデータベースから使用できる4Dデータベースです。エクスターナルデータベースの利用は、このデータベースを一時的にカレントデータベース、言い換えれば4Dにより実行されるSQLクエリのターゲットデータベースとして指定することを意味します。デフォルトでメインデータベースがカレントデータベースです。
エクスターナルデータベースはCREATE DATABASEを使用してメインデータベースから直接作成できます。エクスターナルデータベースを作成したら、それをUSE DATABASEコマンドを使用してカレントデータベースとして指定できます。そして標準のSQLコマンド (CREATE TABLEやALTER TABLE等) でストラクチャを変更し、データを格納できます。DATABASE_PATH関数を使用していつでもカレントデータベースを知ることができます。
エクスターナルデータベースの主たる関心は、4Dコンポーネントから作成および処理が可能であるということです。この機能により、必要に応じてテーブルやフィールドを作成するコンポーネントが開発できるようになります。
注: エクスターナルデータベースは標準の4Dデータベースです。4Dや4D Serverアプリケーションでそれをメインデータベースとして開き、操作することができます。逆に、標準の4Dデータベースをエクスターナルデータベースとして使用することができます。しかしエクスターナルデータベースに (Designerパスワードを設定することで) アクセス管理システムを有効化することはできません。有効にすると、USE DATABASEを使用してアクセスすることができなくなってしまいます。
C:/MyDatabase/にエクスターナルデータベースExternalDB.4DBとExternalDB.4DDを作成する:
Begin SQL
CREATE DATABASE IF NOT EXISTS DATAFILE 'C:/MyDatabase/ExternalDB';
End SQL
メインデータベースのストラクチャファイルと同階層にエクスターナルデータベースTestDB.4DBとTestDB.4DDを作成する:
Begin SQL
CREATE DATABASE IF NOT EXISTS DATAFILE 'TestDB';
End SQL
ユーザが指定した場所にエクスターナルデータベースExternal.4DBとExternal.4DDを作成する:
C_TEXT($path)
$path:=Select folder("Destination folder of external database:")
$path:=$path+"External"
Begin SQL
CREATE DATABASE DATAFILE <<$path>>;
End SQL
プロダクト: 4D
テーマ: SQLコマンド
SQLリファレンス ( 4D v16)