2016-07-05 17 views
2

有4情況:(比如我在談論ON DELETERESTRICT在外鍵中的含義是什麼?

  • 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

我看,謝謝.. upvote –

2

限制功能(這是指從本外鍵記錄):拒絕刪除或更新操作父表。指定RESTRICT(或NO ACTION)與省略ON DELETE或ON UPDATE子句相同。

無動作:來自標準SQL的關鍵字。在MySQL中,相當於RESTRICT。如果在被引用的表中存在相關的外鍵值,MySQL服務器會拒絕父表的刪除或更新操作。一些數據庫系統具有延期檢查,NO ACTION是延期檢查。在MySQL中,外鍵約束被立即檢查,所以NO ACTION與RESTRICT相同。

+0

好的,謝謝你.. upvote –

+0

你有這個答案的參考,阿馬爾? – Martin

+0

@Martin http:// stackoverflow。com/questions/5809954/mysql-restrict-and-no-action#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 | CASCADE | SET NULL | NO ACTION

相關問題