2

我有一个名为 的 Mnesia 表person,使用以下记录定义:

-record(person, {id, firstname, lastname, phone}).

该表包含以下值:

    12  alen     dumas      97888888
    13  franco   mocci      55522225
    14  ali      othmani    44444449

我想检索在我的情况下的最后一个 id 14

我尝试:

test()->
    Key=mnesia:last(person).

但是当我测试这个功能时,我有这个错误:

** exception exit: {aborted,no_transaction}
     in function  mnesia:abort/1

这是为什么?我能做些什么呢?

4

2 回答 2

4

错误消息exception exit: {aborted,no_transaction}非常清楚:该函数应在事务上下文中调用,而您的代码不是。如果您不需要事务,则可以使用 mnesia:dirty_last/1 代替。请注意,如果表类型是 ordered_set,则 mnesia:last/1 和 mnesia:dirty_last/1 都有意义。对于其他类型,没有明确定义顺序。

于 2013-02-20T19:07:00.237 回答
1

Ppolv 给出了问题的线索:您需要在事务的上下文中调用 mnesia 函数,即 mnesia '活动访问上下文'。没有测试过,但这样的东西应该可以工作:

test()->
      Getlastperson = fun() -> Key=mnesia:last(person) end,
      mnesia:activity(transaction, Getlastperson).   
于 2014-11-15T20:25:21.010 回答