2012-04-05 10 views
0

ユーザーがコメントを残しているフォーラムテーブルで使用するのに最適な制約は何ですか?mySQL制限カスケードなしアクション設定

後で一部のユーザーが削除されると仮定します。コメントを付けたユーザーを削除すると、テーブルのユーザーエントリはどうなりますか?

誰かが説明できると思っています。

答えて

1

この質問には2つの部分があります

  1. はこれを実装する最善の方法?ユーザー行を「ソフト削除」することができます。これは、のような利点があります。

    • ユーザー情報を失っていないユーザーは、解除、削除ソフト削除を実装することができ

    ユーザー

  2. にリンクされたデータを失うことなく、参照整合性を維持
  3. できるようにすること
  4. 別の列をdateDeleted列のusers表に追加します.Nullの場合、ユーザーは削除されません。私は、SOがこのような仕組みを使って投稿を削除すると信じています。

  5. restrict cascade no actionは何ですか? MySQL docs

  • がRESTRICT言う:親テーブルの削除または更新操作を拒否します。 RESTRICT(またはNO ACTION)の指定は、ON のDELETE句またはON UPDATE句を省略することと同じです。

  • NO ACTION:標準SQLのキーワード。 MySQLでは、 RESTRICTに相当します。参照テーブルに関連する外部キー値がある場合、InnoDBは親の テーブルの削除または更新操作を拒否します。 一部のデータベースシステムには遅延チェックがあり、NO ACTIONには 延期チェックがありません。 MySQLでは、外部キー制約はすぐに でチェックされるため、NO ACTIONはRESTRICTと同じです。言い換えれば

あなたがこれを使用する場合はそうすることが参照整合性を破るならば、あなたはできる、削除行はできません。

+0

多くのありがとうございます。 ON UPDATEとON DELETEで指定した最初のオプションにはどのような制約が最も適していますか? – JamesBondInBlack

+0

@oladストレージエンジンとして 'InnoDB'を使用している場合、外部キーが自動的に強制されます。ですから、 'ON UPDATE'と' ON DELETE'のデフォルトはうまくいきます。なぜなら、あなたは行の主キーを変更していないからです。 –

関連する問題