私はこの記録を持っています
-record(transaction, {id, transaction_code, operation_code, ip_access).
このコードを使用して、transaction_backupという名前のこのテーブルのクローンを作成します
mnesia:create_table(transaction_backup,[{disc_copies, [node()]},{attributes, record_info(fields, transaction)},
{record_name, transaction}]).
このコードを使用して、 transactionからtransaction_backupにデータを転送します
mnesia:transaction(fun() ->
Records = mnesia:select(transaction, [{'_', [], ['$_']}]),
[ok = mnesia:write(transaction_backup, Record, write) || Record <- Records]
end).
テーブルトランザクションに次の値が含まれているかどうかを意味します。
1 E001 F200 127.0.01
2 E102 F300 127.0.01
3 E105 F402 127.0.01
テーブルtransaction_backupには同じものが含まれます
1 E001 F200 127.0.01
2 E102 F300 127.0.01
3 E105 F402 127.0.01
ここで、テーブルtransaction_backupを作成したいのですが、今回はテーブルtransaction_backupに、transaction_backupの一意のIDとなるidbackという名前の他のフィールドがあります。
したがって、transaction_backupを別の方法で作成する必要があります。
mnesia:create_table(transaction_backup,[{disc_copies, [node()]},{attributes, record_info(fields, transaction)},
{record_name, transaction}]).
idbackの値は、このコードを使用して自動的に増加します
idback= next_id(tranasction_backup),
next_id(T) ->
mnesia:dirty_update_counter(counter, T, 1).
したがって、transactionからtransaction_backupにデータを転送するときは、次のようなものを作成する必要があります。
mnesia:transaction(fun() ->
Records = mnesia:select(transaction, [{'_', [], ['$_']}]),
F = fun() ->
Idback= next_id(tranasction_backup),
Trans = #tranasaction_backup{idback= Idback},
mnesia:write(Trans),
{ok};
end,
{atomic, Val} = mnesia:transaction(F),
Val.
[ok = mnesia:write(transaction_backup, Record, write) || Record <- Records]
end).
したがって、テーブルtransaction_backupにはこの値が含まれます
1 1 E001 F200 127.0.01
2 2 E102 F300 127.0.01
3 3 E105 F402 127.0.01
テーブルtransaction_backupを作成する方法を知りたい
私が言ったように私は試してみます:
mnesia:create_table(transaction_backup,[{disc_copies, [node()]},{attributes, record_info(fields, transaction)},
{record_name, transaction}]).
しかし、私の場合、テーブルtransaction_backupには、 idbackという名前のテーブルtransactionよりも多くのフィールドがあります。
したがって、テーブルtransaction_backup
を作成するには、別の方法で試す必要があります