テーブル、フィールド、インデックス、リレーション 、あるいはデータベース構造全体について、 非常に詳細な 情報を取得できることをご存知でしょうか。このような情報は、分析やイントロスペクションのために非常に有用です。もちろん、4D Packの非推奨コマンドを使用することもできます。 _AP Get field infosと _AP Get table info.また、SQL system tables を使用する方法もあります。
いずれも、すべての情報を取得することはできません。では、4D コマンドを使用できるのに、なぜプラグインや SQL を使用するのでしょうか?4D コマンドは EXPORT STRUCTUREコマンドは、完全なデータベース構造定義を XMLツリーで 返します。このコマンドは、4D v14 R4 から存在します。
例えば、このコマンドを使うと、次のことがわかります。
- テーブルがジャーナルされているかどうか。
- フィールドがプライマリキーであるかどうか。
- トリガーがフィールドに関連するかどうか。
- 4Dモバイルサービスでテーブルやフィールドが公開されているかどうか。
XMLツリーを解析し、その結果をObject変数に保存する3つのメソッドを提供します。そして、このObjectを4Dオブジェクトコマンドで操作して、テーブル、フィールド、インデックス、リレーションに対して、解析、表示、その他必要なアクションを行うことができます。
各メソッドのソースコードと、完全なサンプルデータベース(4D v16バージョン)が利用可能です。
これらのコマンドをあなたのデータベースにインポートして、すぐに使うことができます。
テーブルとフィールドに関する情報
このコマンドは getTablesAndFieldsメソッドは、XMLツリーを解析し、テーブルとフィールドの情報を取得します。結果は、Object 変数に格納されます。これは、JSON 形式のオブジェクトを抽出したもので、その中には “Table_1” テーブルの情報と “ID“:
{
"id": "1",
"leave_tag_on_delete": "true",
"name": "Table_1",
"uuid": "0F8DD65FCF8E4CBB882B2FF15C9C8A12",
"trigger_insert": "true",
"comment": "Comments on my Table_1",
"displayable_fields_count": "14",
"color": {"alpha":"0","blue":"255","green":"255","red": "255"},
"coordinates": {"height":"355","left":"62","top":"70", "width":"152"},
"Field": [ {
"autosequence": "true",
"id": "1",
"name": "ID",
"not_null": "true",
"type": "4",
"unique": "true",
"uuid": "1DC7531F29684D699D9FE9686AB71009",
"index_ref": [ { "uuid": "7260EA8E18A1477A90F068F70754C384" } ],
"pk": "true"
} , {...} ]
}
インデックスに関する情報
この getIndexメソッドは、XML ツリーを解析し、インデックス情報を取得します。結果は、Object 変数に格納されます。これは、JSON 形式のオブジェクトを抽出したもので、”Index Name” のインデックスを取得します。[Table_1]Champ_Alp” フィールドの情報を見ることができます。
{
"kind": "regular",
"name": "Index Name",
"type": "7",
"uuid": "42E921F874EF44B4A2A08AD82CA53D91",
"field": [ {
"name": "Champ_Alp",
"uuid": "BC7FE443CAC344F993655D4EDE731D87",
"table_name": "Table_1",
"table_uuid": "0F8DD65FCF8E4CBB882B2FF15C9C8A12"
} ]
}
リレーションに関する情報
は、XML ツリーを解析し、インデックス情報を取得します。 getRelationsメソッドはXMLツリーを解析し、リレーション情報を取得する。その結果もObject変数に格納される。これは、” “と” “の間のリレーション情報を抽出したものである。[Table_1]ID” と “[Table_2]ID” のリレーション情報を JSON 形式で抽出したものである。
{
"auto_load_1toN": "false",
"auto_load_Nto1": "true",
"name_1toN": "Link_1_return",
"name_Nto1": "Link_1",
"uuid": "370180DABD8545D690CDC79E15D31215",
"choice_field": "0",
"entry_autofill": "false",
"entry_create": "false",
"entry_wildchar": "false",
"color": {"alpha":"0","blue":"255","green":"255","red":"255"},
"related_field": [ {
"kind": "source",
"name": "ID",
"uuid": "1DC7531F29684D699D9FE9686AB71009",
"table_name": "Table_1",
"table_uuid": "0F8DD65FCF8E4CBB882B2FF15C9C8A12"
} , {
"kind": "destination",
"name": "ID",
"uuid": "B71D191358954A5783210E2447CD1A27",
"table_name": "Table_2",
"table_uuid": "6E23C70A973743B28809D9C3F3CC9060"
} ]
}
4D Packの非推奨コマンドの置き換え
また EXPORT STRUCTUREコマンドで、4D Packの非推奨コマンドを置き換えることができます。のように対応するために実装された2つの4Dメソッドを提供します。 _AP Get field infosと _AP Get table infoコマンドのように対応するために実装された2つの4Dメソッドを提供します。
- Get table info: テーブルの情報を取得します。
- Get field info: フィールドの情報を取得します
現在、この投稿へのコメント機能は利用できません。