-1

私はこの記録を持っています:

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

このテーブルには、次の種類の値が含まれています。

1  anis    hila
2  samir   alagi
3  marwen  fares
4  sana    gabsi
5  safa    sassi

テーブル person の最後の 2 つのレコードを返す関数を開発したい

単に返す意味:

4  sana    gabsi
5  safa    sassi

最後のIDを返すコードがあります

Key=mnesia:last(person).

誰かがこの問題を解決するのを手伝ってくれますか

4

2 に答える 2

1

これはどう:

LastKey = mnesia:last(person)
SecondLastKey = mnesia:prev(person, LastKey)
于 2013-03-21T08:58:02.463 に答える
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).

注: このコードはテストしていないため、エラーが含まれている可能性があります。今夜確認します。

于 2013-03-21T13:05:35.287 に答える