InnoDB表中中Foreign Key定义

1. InnoDB允许a foreign key引用一个索引列或者索引组列。

2. InnoDB现在并不支持用户定义的分区表有foreign keys,这意味着不包含用户定义的分区表InnoDB可以包含foreign key引用,或者被foreign keys引用的列。

3. InnoDB允许a foreign key constraint引用一个non-unique的key,这是对标准SQL的扩展

Foreign Key引用行为

1. SET DEFAULT在mysql中是被允许的,但是对于InnoDB表却是无效的。在CREATE TABLE和

ALTER TABLE语句中,使用SET DEFAULT对于InnoDB表来说,是不允许的。

2. 如果你在parent表中有一些行,他们有相同的referenced key值,InnoDB做foreign key检测,好像伴有相同referenced key值的其它行都不存在。例如,如果你定义RESTRICT类型,在child表有一个行,它关联parent表中的多行,InnoDB不允许删除在parent表中的这些行的任何一行。

3. InnoDB做级联操作,是通过深度优先算法。是基于跟foreign key constraints对应的索引的记录。

4. 在自关联中,你不能使用ON UPDATE CASCADE或者ON UPDATE SET NULL操作,这主要是为了防止无限的循环更新。换句话说,在自关联中,ON DELETE SET NULL是可以的。

5. MySQL does not support deferred constraints

Foreign Key使用和错误信息

1. 你可以获取foreign keys信息和使用情况通过查询INFORMATION_SCHEMA.KEY_COLUMN_USAGE表,

为了获取更多关于InnoDB表的信息,可以查询INNODB_SYS_FOREIGN和INNODB_SYS_FOREIGN_COLS表。

2.SHOW ERRORS命令包含InnoDB表的foreign key的错误信息,你也可以获取更多的信息通过

SHOW ENGINE INNODB STATUS

InnoDB和Foreign KEY Constraints的更多相关文章

  1. admin添加用户时报错:(1452, 'Cannot add or update a child row: a foreign key constraint fails (`mxonline`.`django_admin_l

    在stackoverflow找到答案: DATABASES = { 'default': { ... 'OPTIONS': { "init_command": "SET ...

  2. MySQL Foreign Key

    ntroduction to MySQL foreign key A foreign key is a field in a table that matches another field of a ...

  3. Foreign key (referential) constraints on DB2 LUW v105

    oreign key constraints (also known as referential constraints or referential integrity constraints) ...

  4. MySQL主从复制中断,报“Error on master: message (format)='Cannot delete or update a parent row: a foreign key constraint fails' error code=1217” 错误

    前几天,发现从库挂了,具体报错信息如下: 分析思路 1. 因为我采用的是选择性复制,只针对以下几个库进行复制: card,upay,deal,monitor,collect.所以,不太可能出现对于sa ...

  5. 【MySQL】Create table 以及 foreign key 删表顺序考究。

    1.以下是直接从数据库导出的建表语句. 1 -- ---------------------------- 2 -- Table structure for files 3 -- ---------- ...

  6. MYSQL外键(Foreign Key)的使用

    在MySQL 3.23.44版本后,InnoDB引擎类型的表支持了外键约束.外键的使用条件:1.两个表必须是InnoDB表,MyISAM表暂时不支持外键(据说以后的版本有可能支持,但至少目前不支持): ...

  7. MySQL—FOREIGN KEY

    作用:保持数据一致性,完整性.实现一对一或一对多关系.(学习的过程中,老师说,实际的生产中,一般不使用物理上的外键约束的,都是使用逻辑上的外键约束) 要求: 父表与子表的存储引擎必须相等,而且只能是I ...

  8. 【转】 #1451 - Cannot delete or update a parent row: a foreign key constraint fails 问题的解决办法

    转载地址:http://blog.csdn.net/donglynn/article/details/17056099 错误 SQL 查询: DELETE FROM `zmax_lang` WHERE ...

  9. 由于外键的存在引发的一个mysql问题 Cannot change column 'id': used in a foreign key constraint

    Duplicate entry ' for key 'PRIMARY' 一查,发现表没有设置自增长. 尝试增加修改表,添加自增长. ALTER TABLE sh_incentive_item MODI ...

随机推荐

  1. iOS开发 missing iOS distribution signing identity for 。。。

    苹果真是不让人省心,新年一来上传APP,就出现Missing iOS Distribution signing indetity for xxx 于是就把证书删了做,做了删了再重做,还是不行 百度了一 ...

  2. ios UIKit动力

    UIkit动力学是UIkit框架中模拟真实世界的一些特性. UIDynamicAnimator 主要有UIDynamicAnimator类,通过这个类中的不同行为来实现一些动态特性. 它一般有两种初始 ...

  3. iOS开发之圆角指定 分类: ios技术 2015-05-25 16:26 191人阅读 评论(0) 收藏

    如果需要将UIView的4个角全部都为圆角,做法相当简单,只需设置其Layer的cornerRadius属性即可(项目需要使用QuartzCore框架).而若要指定某几个角(小于4)为圆角而别的不变时 ...

  4. Learning How to Learn, Part 1

    Jan 8, 2015 • vancexu Learning How to Learn: Powerful mental tools to help you master tough subjects ...

  5. 除trigger()方法外的jquery手动触发事件

    trigger()可以触发指定事件是大家基本都知道的了. 除了trigger()之外我们也可以这样来触发: html <div id="box" style="he ...

  6. 二叉树最大路径和-Binary Tree Maximum Path Sum

    Given a binary tree, find the maximum path sum. For this problem, a path is defined as any sequence ...

  7. iOS 之 内存管理

    凡是alloc copy mutablecopy init 声明的变量,都需要通过手动的方式进行释放,realse. 如果 copy一个对象,则拥有了拷贝的对象,要负责释放. 如果 保持(retain ...

  8. 排序问题思考(要求时间和空间复杂度尽可能的低)【Part 2】

    继上篇博文,今天我将先介绍一下什么是计数排序,将计数排序描述清楚后,再进行后续的桶排序方法解决这个问题. 通常情况下,一提到排序,大家第一反应就是比较,其实,今天我要说的这个计数排序,不是基于比较的排 ...

  9. 去掉删除discuz x3.2 的-Powered by Discuz!

    如图discuz论坛 网站标题栏的尾巴powered by discuz!是不是很想删除呢,特别是为什么会剩下短线呢?下面就叫你如何准确删除或者修改. 工具/原料 8UFTP(使用自己熟悉的网站文件上 ...

  10. js原生设计模式——2面向对象编程之js原生的链式调用

    技巧点:对象方法中返回当前对象就可以链式调用了,即方法中写return this; <!DOCTYPE html><html lang="en"><h ...