Database / Mnesia basics Interview questions
How do you read a record from a Mnesia table?
mnesia:read/1 (or the 2-arity form naming the table explicitly) fetches all records matching a
given primary key, returning a list — empty if nothing matches, one element for a set
table, or possibly several for a bag table where duplicate keys are allowed.
mnesia:transaction(fun() -> mnesia:read({person, 1}) end). %% -> {atomic, [#person{id = 1, name = "Ada", age = 34}]}
Like write/1, read/1 must run inside a transaction so Mnesia can apply proper
locking — a read inside a transaction takes a read lock, ensuring the data can't change underneath it
before the transaction completes. The result of the whole transaction function is wrapped as
{atomic, Result} on success, or {aborted, Reason} if it failed.
More Related questions...