2013-04-14 23 views
5

たとえば、mnesiaに{id, name}を保存しましたが、{id, name, age}に更新したい場合は、スキーマを変更するたびにtransform_tableに電話する必要がありますか?mnesiaスキーマを更新する最も簡単な方法は何ですか?

+2

これ以外に何ができると思われますか?いくつかの関数呼び出しでテーブルを変更する必要がありますか? transform_table/{3-4}では、スキーマの調整方法を変更するオプションがあります。 – d11wtq

+1

はい。あなたはそのテーブルを変換する必要があります –

+0

mnesiaテーブルが非常に大きくなると、transform_tableに非常に時間がかかりますか?そうであれば、ホットコードのアップグレードのメリットに影響します。別のソリューションを使用する場合は、レコードバージョンを追跡し、ロードされているレコードをアップグレードするだけで、アップグレードコードが面倒でエラーを起こす可能性があります。 –

答えて

1

最も簡単な方法は、テーブルを削除して再作成することです。データをテーブルに保存する必要がある場合は、mnesia:transform_tableがおすすめです。

+1

テーブルを削除して再作成すると運用システムが壊れる可能性があります。 –

+0

ほとんどの場合、テーブルを再作成している間はデータベースにアクセスしない限り、はいです。 'transform_table'はこのような問題を回避します。 – legoscia

+0

うん、transform_tableはそのような問題に取り組むためのまともなアプローチです。私は答えにもっと広い視点を与えていました。 –

関連する問題