テーブル、フィールド、インデックス、リレーション 、あるいはデータベース構造全体について、 非常に詳細な 情報を取得できることをご存知でしょうか。このような情報は、分析やイントロスペクションのために非常に有用です。もちろん、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: フィールドの情報を取得します