私はこの記録を持っています:
-record(person, {id, token, password, pin, key, salt, pin_salt, subscription_date, first_name, last_name, alias, gender, created_at, birth_year, birth_month, birth_date}).
そして私はテーブルperson_backupを作成するこの関数を持っています
testcreate()->
mnesia:create_table(person_backup,[{disc_copies, [node()]},{attributes, record_info(fields, person)},
{record_name, person}]).
そして私はテーブルpersonからperson_backupにデータを転送するこの関数を持っています
testbackup()->
mnesia:transaction(fun() ->
Records = mnesia:select(person, [{'_', [], ['$_']}]),
[ok = mnesia:write(person_backup, Record, write) || Record <- Records]
end).
私の目標は、私の主要な機能でテストを行うことです
check(Counter)->
if Counter =:= 40 ->
model:testbackup();
model:reset():
true-> io:format(" it not ok")
end.
しかし、私の問題は、:model:reset()を実行するときです。
テーブルperson_backupが削除されます
私の目標は、model:reset()を実行する前に、personからperson_backupにデータを転送する必要があることです。
これはreset()、destroy()、create()のコードです
reset() ->
stop(),
destroy(),
create(),
start(),
{ok}.
destroy() ->
mnesia:start(),
mnesia:delete_table(counter),
mnesia:delete_table(person),
mnesia:stop(),
mnesia:delete_schema([node()]).
create() ->
mnesia:create_schema([node()]),
mnesia:start(),
mnesia:create_table(counter, [{attributes, record_info(fields, counter)}, {disc_copies, [node()]}]),
mnesia:create_table(person, [{attributes, record_info(fields, person)}, {disc_copies, [node()]}]),
mnesia:create_table(person_backup,[{disc_copies, [node()]},{attributes, record_info(fields, person)},
{record_name, person}]),
mnesia:stop().