如何在 mnesia 中获取多行

How to fetch multiple rows in mnesia

{atomic,[R]}={atomic,[{ios,2,"hhh"},{ios,1,"hhh"}]}

这会产生一个 error.What 我想做的是基本上从 mnesia table 中获取多行并使用 case 语句来处理任何错误(如果不存在我正在搜索的记录).只要有一个或零个元组对应于搜索到的项目,它就可以正常工作,但是当有多个元组时,它会抛出 error.Below is full code

x( Artist) ->
Query = fun() ->
        mnesia:match_object({ios,'_', Artist } )
    end,
 X=case mnesia:transaction( Query) of
    {atomic,[R]} ->
io:format("Text found in Android : ~p~n", [R#ios.txt]) ;
    {atomic,[]} ->
        Id=1000, 
        io:format("No records with ID = ~p~n", [Id]);
   {aborted,{no_exists,ios}}->
          hi        
end,
X.

如果您的请求找到多行,答案是(我猜){atomic,List} 其中 List 是一个包含多个元素的列表,因此无法与 [R] 列表匹配一个元素。

你可以做的是接收列表并遍历它打印结果;

x( Artist) ->
Query = fun() ->
        mnesia:match_object({ios,'_', Artist } )
    end,
 case mnesia:transaction( Query) of
    {atomic,[]} ->
        Id=1000, 
        io:format("No records with ID = ~p~n", [Id]);
    {atomic,L} ->
        [io:format("Text found in Android : ~p~n", [R#ios.txt]) || R <- L] ;
    {aborted,{no_exists,ios}}->
          hi        
end.