問題の詳細。 InnoDBテーブルがあるとします。このテーブルにはいくつかのレコードが含まれています。 私の質問は:どのように "削除"操作を実装し、操作ログのいくつかの形式を念頭に置いていますか?MySQLをテーブルから削除するか、テーブルの更新テーブルの列を削除済みとしてマークしますか?
- 削除操作には
DELETE FROM table_x WHERE...
を使用する必要がありますので、「削除」を引用しました。これは、外部キーの制約でうまくいきます。しかし、どのようにしてこの操作を追跡できますか? (それは私がデータベースロギング操作の何らかの形を意味することによって)。削除されたレコードがセカンダリデータベースまたは同じデータベース上の別のテーブルに挿入された場合は、良い考えですか? - もう一つのアイデアは、のは、(削除されたレコードのための)可能(アクティブ/有効なため)値1と0との
valid
を言わせて、列を持っていることであろう。 「削除」操作では、この列の値を単に0に設定し、ビジネスロジックはそれを考慮しません。ロギングは、すべてのレコードを保存することによって、同じデータベース上で実行されます。このアプローチでは、外部キーに基づいて別のテーブルからレコードを更新するなど、追加のタスクを実行するためにトリガーを頻繁に使用する必要があります。
あなたが持っている場合は、このタスクを達成するための追加の方法を自由に追加してください。また 、我々はその変種1を決めるだろう場合は)最高の作品、それがDELETE FROM database1.table
とINSERT into database2.table
の両方を実行するためにJavaコードから開始したのと同じトランザクション()で可能ですか? (私は正直言ってこれを試していないが、私はそれが動作するとは思わない)。私はちょうど最初のデータベースからの削除された行と2番目の行の行が欠けてしまうことを望んでいません。最良のオプション)が可能、まだ1ない場合は、TABLE1からレコードを削除し、同じトランザクション内で表2にそれらを挿入することによって、TABLE1からtable2のにデータを「移動する」をお勧めですか?
心のMySQLサーバにデータベースの整合性と解決策は私の質問に答える際に/また、ログの問題を解決する必要が解決策を提案するという事実を保つ内蔵のチェックを持ってください。私は最初のアプローチを好む
私はpersonnalyが有効な/削除された列で行く、あなたが "ペンディング"など、後で必要な場合はいくつかの行を作ることができます。 –
どのような種類のデータについて話していますか?アーカイブに移行した場合、データをマイニングすることで利益を得ることができますか? –