web-dev-qa-db-ja.com

カスケードと制限の違いは? SQL DDLデータベース

誰かが正確にカスケードし、制限を意味するものを教えてもらえますか? DDLパートの対象となるデータベースシステムにあります。

そして、私は私のdeleteステートメントにそれらのいずれも書いていない場合はどうなりますか?

22
user3102872

ON DELETE CASCADEおよびON DELETE RESTRICTは外部キープロパティであり、2つのテーブル間のリレーションシップを作成するときに設定します。

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

いずれにしても、DELETE句に何も記載する必要はありません。

また、DeleteコマンドとUpdateコマンドのさまざまなルールに関するブログ投稿もここで詳しく書いています。

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

52
Aram

外部キーに関連付けられた削除には3つのタイプがあります

  1. カスケードの削除:親テーブルからデータが削除されると、子テーブル(外部キーテーブル)からデータが自動的に削除されます。
  2. 削除セットNullの場合:データが親テーブルから削除されると、子テーブルの外部キーに関連付けられたセルはnullになります。
  3. 削除制限時:データが親テーブルから削除され、子テーブルに関連付けられた外部キーがある場合、エラーが発生し、レコードを削除できません。
17
Aditya Parmar

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

0
elifares