从mnesia表中获取所有记录

时间:2015-01-21 21:10:31

标签: erlang mnesia

我正在使用mnesia为已连接到某个websocket的用户存储Pid。

-record(connection, {pid, name}).

handle_join(ServiceName, WebSocketId, State, EventName) ->
  mnesia:dirty_write(#connection{pid=WebSocketId, name=EventName}).

Pid是关键,使用tv:start()应用程序我能够看到Pid正确存储在连接表中。我现在想要向该表中的所有Pids发送消息,并在websocket连接关闭时删除Pid。

从该连接表中检索所有Pids的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

您可以使用all_keys(Tab) -> KeyList | transaction abortdirty_all_keys(Tab) -> KeyList | exit({aborted, Reason}).

  

all_keys(标签) - > KeyList |交易中止

     

此函数返回名为Tab的表中所有键的列表。该   此函数的语义是上下文敏感的。见mnesia:activity / 4   欲获得更多信息。在事务上下文中,它获取读锁定   在整个桌子上。