我有一个名为person
的Mnesia表,使用以下记录定义:
-record(person, {id, firstname, lastname, phone}).
该表包含以下值:
12 alen dumas 97888888
13 franco mocci 55522225
14 ali othmani 44444449
我想要检索我的案例 14 中的最后一个ID。
我尝试:
test()->
Key=mnesia:last(person).
但是当我测试这个函数时,我有这个错误:
** exception exit: {aborted,no_transaction}
in function mnesia:abort/1
为什么?我该怎么办呢?
答案 0 :(得分:3)
错误消息exception exit: {aborted,no_transaction}
非常清楚:该函数应该在事务上下文中调用,而您的代码不是。
如果您不需要事务,则可以使用mnesia:dirty_last / 1。
请注意,如果表类型为ordered_set,则mnesia:last / 1和mnesia:dirty_last / 1都有意义。对于其他类型,没有明确的订单定义。
答案 1 :(得分:1)
Ppolv给出了问题的线索:您需要在交易的上下文中调用mnesia函数,即mnesia'活动访问上下文'。没有测试它,但这样的东西应该工作:
test()->
Getlastperson = fun() -> Key=mnesia:last(person) end,
mnesia:activity(transaction, Getlastperson).