将数据从表传输到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}]),