2013-12-16 16 views

答えて

29

ON DELETE CASCADEとON DELETE RESTRICTは外部キーのプロパティで、2つのテーブル間の関係を作成するときに設定します。

リレーションシップをON DELETE CASCADEに設定すると、親テーブルでDELETEステートメントを実行すると、対応するすべての行が自動的にCHILDテーブルから削除されますが、RESTRICT(デフォルトの外部キー関係の動作)は、親テーブルから行を削除しようとしたときに、同じIDを持つ子テーブルに行がある場合、既存の子行について不平を言うことになります。

どちらの方法でも、DELETE句には何も言及する必要はありません。

私はまた、削除のために異なるルールに関するブログ記事を書いて、アップデートはここでは詳細にコマンド:

https://koukia.ca/sql-server-foreign-key-update-and-delete-rules-556cf09117fe

+0

私はON DELETE RESTRICTと言うと、親テーブルの削除された行は他​​のテーブルから削除されませんか? – user3102872

+2

RESTRICTに設定すると、行(親または子)が削除されず、表示され、エラーが表示されます。子行の有無にかかわらず親行を削除したい場合は、NO ACTIONを使用してください。 – Aram

+1

**カスケード**は、親を削除すると子も削除されることを意味します。 ** Restrict **は削除しようとするとエラーになります。 ** No Action **は、親を削除したときに子の中のものを変更しません。 ** Set default **は、親を削除するときに子をデフォルト値に設定します。 ** Set null **は、親が削除されたときに子をnullに設定します。私は正しい?ありがとうございました – user3102872

0

右ので、これらは、DELETEとON UPDATE ON親テーブル/行に適用されます。 NO ACTIONとRESTRICTが同じ理由は、親が存在しない場合は、子と親との関係を持つことができないためです。

4

ON DELETE CASCADEを

  1. 外部キーに関連付けられて削除上の3つのタイプがあります。データは、親テーブルから削除されたときに、自動的にデータが子テーブル(外部キーテーブル)から削除。
  2. On Delete Null:親テーブルからデータが削除されると、関連付けられた外部キーは子テーブルでヌルになります。
  3. 削除時の制限:データが親テーブルから削除され、子テーブルに関連付けられた外部キーがあるとエラーが発生した場合、レコードを削除することはできません。
関連する問題