Mnesia には、イベント ベースの通知があります。mnesia イベントをサブスクライブするプロセス (gen_server) を持つことが可能です。これらのイベントは、テーブル イベント、システム イベントなどに分類されます。イベントに関する部分で mnesia のドキュメントを読んでください。実際には、プロセスが mnesia イベント ハンドラーを呼び出してイベントを報告することは可能ですmnesia:report_event(Event)
。mnesia イベントに登録されているすべてのプロセスは、このメッセージを受け取ります。Mnesia は、テーブル上のすべてのトランザクションに関するリアルタイムの情報をサブスクライブされたプロセスに報告します。読み取り、書き込み、または削除トランザクションがあり、そのループ内のプロセスは、関心のあるイベントのタイプにパターン マッチできます。詳細なテーブル イベントと単純なテーブル イベントがあります。私は個人的にイベントが非常に有用であると感じました。ドキュメントから詳細を取得できるはずです。
イベントについて。現在、mnesia テーブルには同じタイプのレコードが格納されています。この情報は、 を呼び出すことでアクセスできますmnesia:table_info(Table_name::atom(),attributes)
。mnesia テーブルにインデックスを適用する場合、最初のレコード フィールド (通常は「主キー」と呼ばれる) でない限り、これらの属性から任意のフィールドを受け入れます。理由の数々。以下のコードスニペットを検討してください
-record(employee,{id,first_name,other_name,sex,age,job}).
インストール (ノード)->
mnesia:create_schema(ノード),
mnesia:start(),
mnesia:create_table(employee,[{index,[age,sex,first_name,job]},
{attributes,record_info(fields,employee)}]),
mnesia:stop(),
わかった。
私があなたの質問をよく理解していれば、テーブルの従業員には列があり、年齢、性別、名、その他の名前、および仕事が索引付けされていると言えますmnesia:index_read/3 or mnesia:index_match_object/2 or mnesia:index_match_object/4
。幸運を
/joshmuza@gmail.com