mysql 外键总结

  • 1.设置外键MySQL ERROR 1005 错误

    MySQL ERROR 1005 (主要是约束不一样导致的)例如:

    1、两表外键的引用类型不一样,如主键是int外键是char,字段长度

    2、两表主键和外键的字符编码不一致,也可能存储引擎不一样,支持外键的存储引擎是innodb

  • 2.MySQL外键约束删除时和更新时各取值的含义

    MySQL支持外键的存储引擎只有InnoDB,在创建外键的时候,要求父表必须有对应的索引,子表在创建外键的时候也会自动创建对应的索引。在创建索引的时候,可以指定在删除、更新父表时,对子表进行的相应操作,包括RESTRICT、NO ACTION、SET NULL和CASCADE。其中RESTRICT和NO ACTION相同,是指在子表有关联记录的情况下父表不能更新;CASCADE表示父表在更新或者删除时,更新或者删除子表对应记录;SET NULL则是表示父表在更新或者删除的时候,子表的对应字段被SET NULL。

-3.因为只有InnoDB引擎才允许使用外键,所以,我们的数据表必须使用InnoDB引擎。

4.如果主从表只是普通的外键约束,则在更新/删除主表记录时,需要先更新/删除从表记录,否则将会报外键约束异常,导致操作失败,如下:

 Cannot delete or update a parent row: a foreign key constraint fails (`test`.`goods`, CONSTRAINT `goods_ibfk_1` FOREIGN KEY (`shop_id`) REFERENCES `shop` (`id`))

最新文章

  1. 简易版的TimSort排序算法
  2. aes rsa加密
  3. web.config中customErrors与httpErrors的区别
  4. Mysql-学习笔记(==》建表修改一)
  5. 《DevOps故障排除:Linux服务器运维最佳实践》读书笔记
  6. 最简单的Java调用C/C++代码的步骤
  7. mac配置svn服务器
  8. linux exec函数家族
  9. ~/microwindows-0.89pre8/src/bin$ ./nano-X error:Cannot bind to named socket
  10. ORA-01950: 对表空间 'NAMETABLESPACE' 无权限
  11. linux 消息队列例子
  12. 【Unity编程】欧拉角与万向节死锁(图文版)
  13. 剑指Offer——Trie树(字典树)
  14. 开源 serverless 产品原理剖析 - Kubeless
  15. vue中@contextmenu在pc和mac中的区别
  16. Windows下安装并启动mongodb
  17. Unity WidgetsUI CreateTaskView Demo
  18. [py]python __file__ 与argv[0]
  19. CSS------如何让大小不一样的div顶部对齐
  20. Python学习(21):Python函数(5):变量作用域与闭包

热门文章

  1. Struts2标签库常用标签(转)
  2. iptables 基础
  3. 从头学pytorch(六):权重衰减
  4. appium工作流程解析
  5. 天猫SSM项目学习记录(一)----第一个相对完整的SSM项目
  6. Serverless 实战 —— Funcraft + OSS + ROS 进行 CI/CD
  7. @程序员,你们还在用网上乱找的方法导入导出Excel么,我们给你造了个轮子!!!!!
  8. Mysql 最全查询语句
  9. C++简单实现Log日志类轻量级支持格式化输出变量
  10. 【题解】HDU Homework(倍增)