ユーザーがコメントを残しているフォーラムテーブルで使用するのに最適な制約は何ですか?mySQL制限カスケードなしアクション設定
後で一部のユーザーが削除されると仮定します。コメントを付けたユーザーを削除すると、テーブルのユーザーエントリはどうなりますか?
誰かが説明できると思っています。
ユーザーがコメントを残しているフォーラムテーブルで使用するのに最適な制約は何ですか?mySQL制限カスケードなしアクション設定
後で一部のユーザーが削除されると仮定します。コメントを付けたユーザーを削除すると、テーブルのユーザーエントリはどうなりますか?
誰かが説明できると思っています。
この質問には2つの部分があります
はこれを実装する最善の方法?ユーザー行を「ソフト削除」することができます。これは、のような利点があります。
ユーザー
dateDeleted
列のusers表に追加します.Nullの場合、ユーザーは削除されません。私は、SOがこのような仕組みを使って投稿を削除すると信じています。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と同じです。言い換えれば
あなたがこれを使用する場合はそうすることが参照整合性を破るならば、あなたはできる、削除行はできません。
多くのありがとうございます。 ON UPDATEとON DELETEで指定した最初のオプションにはどのような制約が最も適していますか? – JamesBondInBlack
@oladストレージエンジンとして 'InnoDB'を使用している場合、外部キーが自動的に強制されます。ですから、 'ON UPDATE'と' ON DELETE'のデフォルトはうまくいきます。なぜなら、あなたは行の主キーを変更していないからです。 –