BaseTableNames、BaseTableIDs、GetBaseTableName 関数
Claris FileMaker の関数の中には、データベースの設計情報を取得するための「デザイン関数」という一連のグループがあります。その中に、ファイルに含まれるテーブルの情報を返す BaseTableNames, BaseTableIDs の各関数が、FileMaker 2023 で新たに追加されました。
この2つの関数は、従来からあった、ファイル内のテーブルオカレンスの情報を返す TableNames, TableIDs 関数と対になっており、セットで覚えると理解しやすいでしょう。
テーブルオカレンス | テーブル | |
---|---|---|
名称リスト | TableNames | BaseTableNames |
IDリスト | TableIDs | BaseTableIDs |
FileMaker の関数や、以下で触れるシステムテーブルでは、テーブルオカレンスを Table、(テーブル定義画面で設定する)テーブルを BaseTable と呼びます。
加えて、これらと関連する GetBaseTableName 関数も追加されました。この関数は、フィールド参照を渡すと、そのフィールドが属するテーブル名を返してくれます。
FileMaker_BaseTables システムテーブル
また、ExecuteSQL 関数からアクセスできるシステムテーブルに FileMaker_BaseTables が新たに追加されました。
このテーブルのスキーマは以下のとおりです。
FileMaker_BaseTables のフィールド
1. BaseTableName
2. BaseTableId
3. Source (<internal>, MYSQL, など)
4. ModCount
今まで、ExecuteSQL からアクセスできるシステムテーブルは、FileMaker_Tables, FileMaker_Fields, FileMaker_BaseTableFields の3つでした。
テーブルオカレンス | テーブル | |
フィールド情報 | FileMaker_Fields | FileMaker_BaseTableFields (19.4.1で追加) |
テーブル情報 | FileMaker_Tables | FileMaker_BaseTables (今回追加) |
---|
それぞれのスキーマは以下のとおりです。
1. TableName
2. TableId
3. BaseTableName
4. BaseFileName
5. ModCount
FileMaker_Fields のフィールド
1. TableName
2. FieldName
3. FieldType (SQLのデータ型)
4. FieldId
5. FieldClass (Normal, Summary, Calculated)
6. FieldReps
7. ModCount
FileMaker_BaseTableFields (19.4.1で追加) のフィールド
1. BaseTableName
2. FieldName
3. FieldType (SQLのデータ型)
4. FieldID
5. FieldClass (Normal, Summary, Calculated)
6. FieldReps
7. ModCount
テーブル情報に効率よくアクセス
今回追加されたこれらの関数やシステムテーブルにより、テーブルオカレンスよりもさらに元の、テーブルの情報に簡単にアクセスできるようになりました。
これまで例えば、データベースのスキーマ情報を FileMaker 内で動的に作ろうとした際には、一度テーブルオカレンスの情報を経由してテーブル情報を取得する必要があったため、式が複雑になったり、問い合わせに負荷がかかったりしていました。また、テーブルオカレンスのないテーブルの情報が取得できないという問題がありました。
19.4.1 で追加された FileMaker_BaseTableFields では、(リレーションシップグラフのテーブルオカレンスではなく)テーブル定義を参照して情報を返しますが、テーブルのリストを取得しようとした場合に、フィールドが1つも定義されていないテーブルの情報は得られない、という注意点が引き続きありました。
これが今回の FileMaker_BaseTables で解決できます。元テーブルの情報に直接アクセスできることで、式がシンプルになり、処理が高速になるというメリットがあります。
この機能追加がなぜこのタイミングで行われたのかを考えると、今回新たに追加された機能である OnWindowTransaction スクリプトトリガによって、監査ログを取れるようになったことと関連があると思われます。「いつ、どのフィールドが、どう更新された」という記録を取ろうと考えた場合に、求められるのはテーブルオカレンスの情報ではなく、そのフィールドがどのテーブルに属するか、という情報でしょう。
これらの今回追加された新機能を組み合わせることで、監査ログを記録する仕組みが、FileMaker の純正の機能だけで今までよりもよりシンプルに実現できることになりそうです。
Claris FileMaker 2023 – OnWindowTransaction スクリプトトリガ
【 余談 】
最近下記リンク先への流入増大したいこともあり、
流入量が多いとブログの価値が高まりますます投稿を加速していきたいと思います。
リンク先を開いていただけると大変助かります。
Claris International Inc. (日本語)
ご協力いただけましたら幸いです。