2017-07-06 11 views
0

Ich habe eine Mnesiatabelle, sagen wir employee. Ich muss alle Angestelltenakten finden, deren Name in EmployeeNameList = ["Erlich", "Richard", "Gilfoyle", "Dinesh"] ist. Gibt es eine Möglichkeit, dies unter Verwendung von mnesia:select oder einer anderen Funktion zu tun?Wie schreibe ich "in" Abfrage für Erlang Mnesia?

Antwort

1

Im Anschluss an die Dokumentation von Mnesia Es kann wie folgt erfolgen:

get_employees_by_name(NameList) -> 
    MatchHead = #employee{name = '$1', _ = '_'}, 
    Result = '$_' 
    MatchSpec = [ { MatchHead, [{'=:=', '$1', Name}], [Result]} || Name <- NameList ], 
    F = fun() -> 
    mnesia:select(employee, MatchSpec) 
    end, 
    {atomic, Result} = mnesia:transaction(F), 
    Result. 
Verwandte Themen