• 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

  • 相关阅读:
    C#中Dictionary<TKey,TValue>排序方式
    反射之取类中类的属性、变量名称及其值
    程序测试用的IE浏览器第二次无法加载入口程序的问题及其解决方法
    使用Windows Form 制作一个简易资源管理器
    如何查看自制词典的执行效率
    cocos2dx 3.12 eclipse编辑器切换到Android Studio
    Cordova安装使用
    Activity的启动模式
    踩坑集锦——MVC权限验证
    设计模式学习之路——策略模式
  • 原文地址:https://www.cnblogs.com/yandufeng/p/5051237.html
Copyright © 2020-2023  润新知