mnesia相当于ets:lookup_element()?

时间:2012-11-05 10:19:32

标签: erlang

ets的mnesia等价物是什么:lookup_element(Tab,Key,Pos)?我正在努力使用手册页和mnesia教程找到它。

2 个答案:

答案 0 :(得分:2)

我会在mnesia http://www.erlang.org/doc/man/mnesia.html#match_object-3中使用match_object(Tab,Pattern,LockKind)。

答案 1 :(得分:0)

如果您只想要那个位置,那么您无法避免qlc:q/1。查询列表理解是唯一可以让您操纵mnesia如何为您提供结果的读取方法。

-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])).

请参阅此question及其answer