我在我的数据库mnesia中有两个具有以下语法的表:
-record(person, {firstname, lastname,adress}).
-record(personBackup, {firstname, lastname,adress}).
我想将表 person 中的数据传输到表 personBackup
我认为我应该用这种语法创建两个表(我同意你的想法)
mnesia:create_table(person,
[{disc_copies, [node()]},
{attributes, record_info(fields, person)}]),
mnesia:create_table(person_backup,
[{disc_copies, [node()]},
{attributes, record_info(fields, person)},
{record_name, person}]),
现在我有一个名为验证
的功能在此功能中,我将进行测试,如果测试已经过验证,我应该将数据从人传输到 person_backup ,然后我应该重置< / strong>
这是我的功能
verify(Form)->
if Form =:= 40 ->
%%here I should transert data from person to person_backup : read all lines from person and write this lines into person_backup
reset();
Form =/= 40 ->
io:format("it is ok")
end.
这是重置:
功能reset() ->
stop(),
destroy(),
create(),
start(),
{ok}.
答案 0 :(得分:0)
您不必为每个表使用单独的记录定义。 mnesia:create_table选择了record_name
,因此您可以像这样创建表格:
mnesia:create_table(person,
[{disc_copies, [node()]},
{attributes, record_info(fields, person)}]),
mnesia:create_table(person_backup,
[{disc_copies, [node()]},
{attributes, record_info(fields, person)},
{record_name, person}]),
record_name
的值默认为表的名称,因此无需为person
指定它。 (我将personBackup
更改为person_backup
,因为与变量不同,Erlang原子通常在没有驼峰的情况下编写。)
然后你可以在两个表中放入相同类型的记录。阅读或选择person
,并写信至person_backup
,无需转换。
答案 1 :(得分:0)
每个表都不需要单独的记录定义。变量90和80将起到作用。如果您希望选择recod_name,可以使用mnesia:create_table
@ legoscia,除第6行外,你的所有内容都是正确的。
mnesia:create_table(person,如果玩家值= 1
这样结果可以打印所有副本和节点。