1

私のデータベースには、次の構文を持つ 2 つのテーブルがあります。

-record(person, {firstname, lastname,adress}).
-record(personBackup, {firstname, lastname,adress}).

テーブルpersonからテーブルpersonBackupにデータを転送したい

この構文で2つのテーブルを作成する必要があると思います(あなたの考えに同意します)

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}]),

今私は verifyという名前の関数を持っています

この関数でテストを行い、テストが検証された場合は、personからperson_backupにデータを転送してから、リセットを行う必要があります。

これが私の機能です

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です:

reset() ->
    stop(),
    destroy(),
    create(),
    start(),
    {ok}.
4

2 に答える 2

0

テーブルごとに個別のレコード定義は必要ありません。変数 90 と 80 でうまくいきます。recod_name のオプションを使用したい場合は、mnesia:create_table を使用できます。

@ legoscia、6行目以外はすべて正しいです。

mnesia:create_table(person, if player value = 1

このようにして、結果はすべてのコピーとノードをディスク化できます。

于 2013-02-12T16:50:46.123 に答える
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。( Erlang のアトムは通常、変数とは異なり、キャメル ケースを使用せずに記述されるため、に変更personBackupしました。)person_backup

次に、同じ種類のレコードを両方のテーブルに入れることができます。から読み取りまたは選択しperson、 に書き込みますperson_backup。変換は必要ありません。

于 2013-02-12T14:07:28.073 に答える