我是erlang中的新手,我需要对从mnesia数据库获得的所有记录进行一些操作.
Result = mnesia:dirty_read(mydatabase, {key1, key2}),
case Result of
[] ->
?DEBUG("No such record found", []);
[#mydatabase{key3 = Key3}] ->
%% some operations
end
Run Code Online (Sandbox Code Playgroud)
如何为我的代码添加一个循环,为所有记录执行一些操作?
我甚至不确定上面的代码是否做到了?
你可以用mnesia:foldl/3它.它迭代表中的所有记录,传递"累加器"值.
它没有明确的"脏"对应物,因此如果要将其作为脏操作运行,则需要使用mnesia:activity/2.(或者你可以在通话中使用它mnesia:transaction.)
在这个例子中,我实际上并没有对"累加器"做任何事情ignored_acc.
mnesia:activity(sync_dirty,
fun() ->
mnesia:foldl(
fun(#mydatabase{}, Acc) ->
%% do something with the record here
Acc
end,
ignored_acc,
my_table)
end)
Run Code Online (Sandbox Code Playgroud)