-module(oddity). -export([run/0]). -record(test_table, {key, value}). run() -> os:cmd("rm -rf Mnesia.oddity*"), net_kernel:start([oddity, shortnames]), ok = mnesia:create_schema([node()]), ok = mnesia:start(), Options = [ {disc_copies, [node()]}, {attributes, record_info(fields, test_table)} ], {atomic, ok} = mnesia:create_table(test_table, Options), Wild_pattern = mnesia:table_info(test_table, wild_pattern), %% Write 10 entries Fill_fun = fun() -> [mnesia:write(#test_table{key=N, value=N}) || N <- lists:seq(1, 20)] end, {atomic, _} = mnesia:transaction(Fill_fun), table_content(Wild_pattern), %% Now, delete and rewrite table Refill_fun = fun() -> Records = mnesia:match_object(Wild_pattern), ok = mnesia:delete_object(Wild_pattern), lists:foreach(fun(Record) -> ok = mnesia:write(Record) end, Records) end, {atomic, ok} = mnesia:sync_transaction(Refill_fun), table_content(Wild_pattern). table_content(Wild_pattern) -> Check_fun = fun() -> mnesia:match_object(Wild_pattern) end, {atomic, Table} = mnesia:transaction(Check_fun), io:fwrite("Table content ~p~n",[Table]), ok.