MYSQL数据库建立的时候,建立外键时,删除规则和更新规则里都有五个可选项:限制、层叠、设为空、设为默认值、不活动。
谁能分别说明一下它们的区别啊?还有按一般经验,是怎么建立怎么选好呢?另外,还有个 “匹配”的属性,里面有 “完整” 和 “部分” 可供选择,这个是做什么用的呢? 怎么个选法呢?谢谢啦~~ 百度找了半天没找到相关说法,各位达人比百度还知道了都。。呵呵
谁能分别说明一下它们的区别啊?还有按一般经验,是怎么建立怎么选好呢?另外,还有个 “匹配”的属性,里面有 “完整” 和 “部分” 可供选择,这个是做什么用的呢? 怎么个选法呢?谢谢啦~~ 百度找了半天没找到相关说法,各位达人比百度还知道了都。。呵呵
限制、RESTRICT (A value cannot be updated when a row exists in a foreign key table that references the value in the referenced table.Similarly, a row cannot be deleted as long as there is a reference to it from a foreign key table.) 子表中无法添加主表没有的记录,主表也无法删除/更新在子表中记录的层叠、CASCADE 更常的翻译是 级联. 当主表中记录被删除时,同时删除所有子表中相关记录。 主表中记录被更新时所有子表相关记录同时更新设为空、SET NULL, 主表删除后,子表相关记录对应字段设置为NULL,设为默认值、 MYSQL不支持!
不活动 NO ACTION,与RESTRICT 非常相似,不过这个检查是在语句执行完后再进行检查,RESTRICT则是在语句执行前检查。这样如果你的TRIGGER中有什么操作,执行后检查的数据则可能符合参照限制。
http://dev.mysql.com/doc/refman/5.1/zh/storage-engines.html#using-innodb-tables里面
15.2.6.4.外键约束
这一节你就明白了