gpt4 book ai didi

erlang - 如何在erlang中读取mnesia数据库的所有记录?

转载 作者:行者123 更新时间:2023-12-02 09:45:54 25 4
gpt4 key购买 nike

我是 erlang 新手,我需要对从 mnesia 数据库获取的所有记录进行一些操作。

Result = mnesia:dirty_read(mydatabase, {key1, key2}),
case Result of
[] ->
?DEBUG("No such record found", []);
[#mydatabase{key3 = Key3}] ->
%% some operations
end

如何在代码中添加一个循环来对所有记录执行某些操作?

我什至不确定上面的代码是否做到了?

最佳答案

您可以使用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)

关于erlang - 如何在erlang中读取mnesia数据库的所有记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35849496/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com