mnesiaから1列のみを選択するにはどうすればよいですか? 私はこのコードでETSテーブルにonle列を選択することができます。mnesiaから1列のみを選択
ets:match(AllData_TableId, {'_', '$1','_',','_'},3),
私はmnesiaのための同様のものが必要。
ありがとうございます。例では
mnesiaから1列のみを選択するにはどうすればよいですか? 私はこのコードでETSテーブルにonle列を選択することができます。mnesiaから1列のみを選択
ets:match(AllData_TableId, {'_', '$1','_',','_'},3),
私はmnesiaのための同様のものが必要。
ありがとうございます。例では
はこちらをご覧ください:http://en.wikibooks.org/wiki/Erlang_Programming/Using_mnesia、著者は機能mnesia:match_object/1
を使用する方法を見て、そして、私たちは私たちのmnesiaデータベースを設計することをお勧めしますが、ここでより多くのhttp://www.erlang.org/doc/man/mnesia.html#match_object-1
それを読んでみおよび/またはこの方法の使用を避けるための方法でテーブルを使用します。これは、記憶装置がテーブル全体を横断して一致するものを探すためです。あなたが必要なもの
は、私はそれを得た
-include_lib("stdlib/include/qlc.hrl"). select(Q)-> case mnesia:is_transaction() of false -> F = fun(QH)-> qlc:e(QH) end, %% mnesia:transaction(F); mnesia:activity(transaction,F,[Q],mnesia_frag); true -> qlc:e(Q) end. -record(book,{title,isbn,price,category}). book_title({book,ISBN})-> select(qlc:q([X#book.title || X <- mnesia:table(book),X#book.isbn == ISBN])).
QLCです。ただ、QLCを使用します。
Transaction = fun() ->
Query = qlc:q([{Tablename#tablename.columnname} ||
Tablename <- mnesia:table(tablename)]),
qlc:eval(Query)
end.
あなたはそのためmnesia:select
を使用することができます。
Spec = [{#tablename{columnname = '$1', _ = '_'}, [], ['$1']}],
{atomic, Result} = mnesia:transaction(fun() -> mnesia:select(tablename, Spec) end),
Result.
あなたのコード内のいくつかのミスがあります。モジュール「記憶喪失」が完全に存在しないか、このコードは非常に古くなったerlangバージョンを意味します。 –
失調症は本当に存在していませんでした。管理者はデータベースの「記憶喪失」を呼び出すことを認めなかった。 :-) – rvirding