如何在 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.
{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.