将数据从表传输到erlang中的另一个表

将数据从表传输到erlang中的另一个表,erlang,mnesia,Erlang,Mnesia,我的数据库中有两个具有以下语法的表: -record(person, {firstname, lastname,adress}). -record(personBackup, {firstname, lastname,adress}). 我想将数据从表person传输到表personBackup 我认为我应该用这种语法创建两个表(我同意你的想法) 现在我有了一个名为verify的函数 在该功能中,我将进行测试,如果测试得到验证,我应将数据从个人传输到个人_备份,然后我应进行重置 这是我的职责

我的数据库中有两个具有以下语法的表:

-record(person, {firstname, lastname,adress}).
-record(personBackup, {firstname, lastname,adress}).
我想将数据从表person传输到表personBackup

我认为我应该用这种语法创建两个表(我同意你的想法)

现在我有了一个名为verify的函数

在该功能中,我将进行测试,如果测试得到验证,我应将数据从个人传输到个人_备份,然后我应进行重置

这是我的职责

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}.

您不必为每个表使用单独的记录定义。采用
record\u 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\u name
的值默认为表的名称,因此无需为
person
指定它。(我将
personBackup
更改为
person\u backup
,因为Erlang原子与变量不同,通常不使用驼峰大小写。)


然后,您可以在两个表中放置相同类型的记录。从
person
中读取或选择,然后写入
person\u backup
,无需转换。

每个表不需要单独的记录定义。变量90和80就可以了。如果希望选择recod_name,可以使用mnesia:create_table

@莱戈西亚,除了第6行,你对所有事情都是正确的

mnesia:创建_表(如果玩家值为1,则为个人)

这样,结果可以将所有副本和节点光盘化


我认为我们应该阅读表格person中的所有行,然后我们应该将这些行写入表格person\u backup能否请您进一步澄清您的答案,特别是关于这一行mnesia:create\u table(person,如果player value=1,正如我说的,我想将数据从一个表传输到另一个表,所以我们应该从第一个表读取所有数据,然后将这些数据传输到第二个表。)
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}]),