2016-07-05 5 views
2

4例があります:(例えばI、約ON DELETEを話している)Foreign KeysのRESTRICTの意味はなんですか?

  • CASCADE:参照行が参照されたものと一緒に自動的に削除されます。
  • ​​:参照レコードの値は、参照されるレコードと共に自動的にNULLに設定されます。
  • NO ACTION:参照行が削除された場合、参照行に変更はありません。
  • RESTRICT:{私はその概念を理解することはできません}

私はそのためdocumentation数回を読んで、それでも私はRESTRICTが何をするかを理解することはできません。例を挙げて誰か説明してもらえますか?

私はNO ACTIONRESTRICTのいずれかがMySQLで同じであると読んでいます。本当?

+0

RESTRICT型制約を定義し、いくつかの親行がある場合、InnoDBはそれらの親行の削除を許可しません。あなたの解釈は何ですか?その? –

+0

@DanBracuk MySQLのマニュアルは、理解するのが最も簡単な言語形式ではないことでよく知られています.... – Martin

答えて

2

RESTRICT:それは依存レコードを削除せずにこの(親)レコードを削除することはできません(これからの外部キーを参照している記録)

ID NAME 
1 AAAA 
2 BBBBB 

child 

ID PARENT_ID 
1 1 
2 1 
3 2 

ON DELETE CASCADE 

IF WE DELETE AAA FROM parent it will delete 1 and 2 entries from child 

on delete null 

IF WE DELETE AAA FROM parent it will set 1 nad 2 PARENT_ID to null from child 

on delete no action 

IF WE DELETE AAA FROM parent it will delete but no action on child 
+0

すべてのケース*( 'CASCADE'、' SET NULL'、 'NO ACTION')*も*従属レコードを削除せずに親レコードを削除する*。 –

+0

削除しないカスケード親レコードのレコードを削除すると、子テーブルの関連するエントリが削除されます –

+0

アップルウォーク –

2

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

NO ACTION:標準SQLのキーワード。 MySQLでは、RESTRICTと同等です。 MySQLサーバは、参照テーブルに関連する外部キー値がある場合、親テーブルの削除または更新操作を拒否します。一部のデータベースシステムでは遅延チェックが行われ、NO ACTIONでは遅延チェックが行われます。 MySQLでは、外部キー制約が直ちにチェックされるため、NO ACTIONはRESTRICTと同じです。

+0

ああ、ありがとうあなた..上の –

+0

あなたはこの答えAmarのリファレンスがありますか? – Martin

+0

@Martin http:// stackoverflow。コム/質問/ 5809954/mysqlの-制限-と-ノーアクション#5810022 –

-1

あなたは

                              [CONSTRAINT [symbol]] FOREIGN KEY 
[index_name] (index_col_name, ...) 
REFERENCES tbl_name (index_col_name,...) 
[ON DELETE reference_option] 
[ON UPDATE reference_option] 

はreference_option、次のようにこれをテストすることができます。 RESTRICT |カスケード| SET NULL | NO ACTION

関連する問題