如何读取erlang中mnesia数据库的所有记录?
我是erlang的新手,我需要对从mnesia数据库获得的所有记录执行一些操作如何读取erlang中mnesia数据库的所有记录?,erlang,mnesia,Erlang,Mnesia,我是erlang的新手,我需要对从mnesia数据库获得的所有记录执行一些操作 Result = mnesia:dirty_read(mydatabase, {key1, key2}), case Result of [] -> ?DEBUG("No such record found", []); [#mydatabase{key3 = Key3}] ->
Result = mnesia:dirty_read(mydatabase, {key1, key2}),
case Result of
[] ->
?DEBUG("No such record found", []);
[#mydatabase{key3 = Key3}] ->
%% some operations
end
如何向代码中添加一个循环,对所有记录执行一些操作
我甚至不确定上面的代码是否能做到这一点?我想你可以试试所有的键(Tab) 所有_键(选项卡)->键列表|事务中止 此函数返回名为Tab的表中所有键的列表。这个 此函数的语义是上下文敏感的。见mnesia:activity/4 了解更多信息。在事务上下文中,它获取一个读锁 在整张桌子上 你可以用它。它遍历表中的所有记录,传递一个“累加器”值 它没有显式的“脏”对应项,因此如果要将其作为脏操作运行,则需要使用
mnesia:activity/2
。(或者,您可以在对的调用中使用它。)
在本例中,我实际上没有对“累加器”执行任何操作,始终保持为忽略\u acc
mnesia:activity(sync_dirty,
fun() ->
mnesia:foldl(
fun(#mydatabase{}, Acc) ->
%% do something with the record here
Acc
end,
ignored_acc,
my_table)
end)