InnoDB和Foreign KEY Constraints
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的更多相关文章
- 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 ...
- MySQL Foreign Key
ntroduction to MySQL foreign key A foreign key is a field in a table that matches another field of a ...
- Foreign key (referential) constraints on DB2 LUW v105
oreign key constraints (also known as referential constraints or referential integrity constraints) ...
- 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 ...
- 【MySQL】Create table 以及 foreign key 删表顺序考究。
1.以下是直接从数据库导出的建表语句. 1 -- ---------------------------- 2 -- Table structure for files 3 -- ---------- ...
- MYSQL外键(Foreign Key)的使用
在MySQL 3.23.44版本后,InnoDB引擎类型的表支持了外键约束.外键的使用条件:1.两个表必须是InnoDB表,MyISAM表暂时不支持外键(据说以后的版本有可能支持,但至少目前不支持): ...
- MySQL—FOREIGN KEY
作用:保持数据一致性,完整性.实现一对一或一对多关系.(学习的过程中,老师说,实际的生产中,一般不使用物理上的外键约束的,都是使用逻辑上的外键约束) 要求: 父表与子表的存储引擎必须相等,而且只能是I ...
- 【转】 #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 ...
- 由于外键的存在引发的一个mysql问题 Cannot change column 'id': used in a foreign key constraint
Duplicate entry ' for key 'PRIMARY' 一查,发现表没有设置自增长. 尝试增加修改表,添加自增长. ALTER TABLE sh_incentive_item MODI ...
随机推荐
- PHP的高并发和大数据处理
收集前人的经验.加速学习,解决工作中的难题. 一.代码优化(包括sql语句的优化), 合理的使用索引,避免整表查询.二.日常海量数据处理我用文件缓存,文件缓存分两种,第一种是最常见的生成html静太文 ...
- poj2886线段树(单点修改,区间查询)
Who Gets the Most Candies? Time Limit: 5000MS Memory Limit: 131072K Total Submissions: 11955 Acc ...
- jstree使用小结(一)
项目中用到tree结构,使用了jstree做个笔记如下: 1. 官网: http://www.jstree.com/ 有时候打不开,那就只能等打得开的时候再看了...O(∩_∩)O [PS: 一 ...
- Git提交过程的一些问题
参考:http://www.cnblogs.com/sinojelly/archive/2011/08/07/2130172.html 提交冲突,无法提交到github git pull origin ...
- 一些JSON 教程
JSON 以下内容来自W3school. JSON:JavaScript 对象表示法(JavaScript Object Notation). JSON 是存储和交换文本信息的语法.类似 XML. ...
- Max Sum of Rectangle No Larger Than K
Given a non-empty 2D matrix matrix and an integer k, find the max sum of a rectangle in the matrix s ...
- python callable 函数
callable(object) 中文说明:检查对象object是否可调用.如果返回True,object仍然可能调用失败:但如果返回False,调用对象ojbect绝对不会成功. 注意:类是可调用的 ...
- R语言中的if-else语句写法
结构 1 : if() xx else yy 一行: 结构 2: if() {xx} else {yy} 或者 if(){ xx }else #此处不能两行写 ...
- JS内存泄漏排查方法——Chrome Profiles
一.概述 Google Chrome浏览器提供了非常强大的JS调试工具,Heap Profiling便是其中一个.Heap Profiling可以记录当前的堆内存(heap)快照,并生成对象的描述文件 ...
- 读书笔记--用Python写网络爬虫02--数据抓取
抓取(scraping)---爬虫从网页中抽取一些数据用以实现某些用途. 三种抽取网页数据的方法:正则表达式.Beautiful Soup和lxml. 2.1 分析网页 通过浏览器自带选项,查看网页源 ...