如何读取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}] ->

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

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)