我有这个记录:
-record(person, {id, firstname, lastname}).
此表包含以下值:
1 anis hila
2 samir alagi
3 marwen fares
4 sana gabsi
5 safa sassi
我想开发一个函数,它返回表人的最后两个记录
意思是返回:
4 sana gabsi
5 safa sassi
我有一个返回最后一个ID的代码
Key=mnesia:last(person).
有人可以帮我解决这个问题
答案 0 :(得分:1)
这个怎么样:
LastKey = mnesia:last(person)
SecondLastKey = mnesia:prev(person, LastKey)
答案 1 :(得分:1)
要在事务中执行某些操作,您只需定义一个执行所需操作的函数,并将此函数作为mnesia事务的参数传递。
获得最后N个人的功能:
getlast(N) ->
% get list of the last N Keys in reverse order
Keys = lists:foldl(fun(_Num,Acc) -> [mnesia:prev(person,hd(Acc))|Acc] end, [mnesia:last(person)],lists:seq(2,N)),
% get the list of the last N records in correct order and return
lists:foldl(fun(Key,Acc) -> [mnesia:read(person,Key)|Acc] end, [],Keys).
获取最后2个元素的交易
Trans = fun() -> ?MODULE:getlast(2),
Result = mnesia:transaction(Trans).
注意:我没有测试此代码,因此可能会出现一些错误。我今晚会检查一下。