0

Erlangmnesiaデータベースに次の小さなテーブルがあります。次のようにdirty_select関数を使用すると:

mnesia:dirty_select(user, [{#user{id = '$1', name = martin}, [], ['$1']}]).

エラーが発生します:

* 1: record user undefined

ユーザーテーブルには、ユーザーIDを主キーとして、「martin」をユーザー名として持つ1つの行があります。次のコマンドを使用すると、うまく機能します。

mnesia:dirty_read(user, 1).

そして、出力は次のとおりです。

[{user,1,martin}]

上記のエラーの理由は何でしょうか?

4

1 に答える 1

4

erlangシェルを使用しているときにこのエラーが発生した場合は、レコードを定義する必要があります。レコードはコンパイル時の構成であり、シェルはそれらの定義にアクセスできません。

1> rd(user, {id, name}).
user
2> #user{id=1, name="foo"}.
#user{id = 1,name = "foo"}
3> mnesia:dirty_select(user, [{#user{id = '$1', name = martin}, [], ['$1']}]).
...

レコードを定義すると、dirty_read操作はレコード構文を使用して結果を出力します。

于 2012-12-30T22:58:00.390 に答える