2016-07-05 14 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

相关问题