博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL外键陷阱
阅读量:6887 次
发布时间:2019-06-27

本文共 1905 字,大约阅读时间需要 6 分钟。

今天发现按照标准SQL写法在 MySQL建表时创建的外键都没有生效 ,调查发现MySQL居然没有创建外键(使用的是最新的MySQL 5.7)。
  1. mysql> create table tbp(id int,pid int REFERENCES tb(id) on delete RESTRICT);
  2. Query OK, 0 rows affected (0.05 sec)
  3. mysql> show create table tbp;
  4. +-------+-----------------------------------------------------------------------------------------------------------------------+
  5. | Table | Create Table |
  6. +-------+-----------------------------------------------------------------------------------------------------------------------+
  7. | tbp | CREATE TABLE `tbp` (
  8.   `id` int(11) DEFAULT NULL,
  9.   `pid` int(11) DEFAULT NULL
  10. ) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
  11. +-------+-----------------------------------------------------------------------------------------------------------------------+
  12. 1 row in set (0.00 sec)
换一种写法可以成功
  1. mysql> create table tbp2(id int,pid int, FOREIGN KEY (pid) REFERENCES tb(id) on delete RESTRICT);
  2. Query OK, 0 rows affected (0.04 sec)
  3. mysql> show create table tbp2;
  4. +-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  5. | Table | Create Table |
  6. +-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  7. | tbp2 | CREATE TABLE `tbp2` (
  8.   `id` int(11) DEFAULT NULL,
  9.   `pid` int(11) DEFAULT NULL,
  10.   KEY `pid` (`pid`),
  11.   CONSTRAINT `tbp2_ibfk_1` FOREIGN KEY (`pid`) REFERENCES `tb` (`id`)
  12. ) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
  13. +-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  14. 1 row in set (0.00 sec)
这也太坑了,不支持就应该报个错啊!
                                  

转载地址:http://rnabl.baihongyu.com/

你可能感兴趣的文章
[清华集训2016]如何优雅地求和——NTT
查看>>
JavaScript 原型链例子讲解
查看>>
书摘---创业36条军规7:业务的五个问题
查看>>
Linux学习-第三节课
查看>>
activemq搭建和使用
查看>>
java语言实现将mysql的linestring、point 数据类型解析成double类型
查看>>
TCP三次握手和四次挥手
查看>>
Nginx动态添加模块
查看>>
WPF和Silverlight概述(1)
查看>>
java笔记:第4章 流程控制
查看>>
《Python从小白到大牛》第8章 控制语句
查看>>
pxe自动安装系统 (linux)
查看>>
cacti关于1000M网卡的监控
查看>>
我的友情链接
查看>>
详解 Spotlight on Unix 监控Linux服务器
查看>>
docker 安装及简单配置
查看>>
关于大数据和古中国的一丝小想法随笔(续)
查看>>
十二年IT职业生涯心得--致我们终将逝去的青春(连载)
查看>>
我的友情链接
查看>>
初学Redis(2)——用Redis作为Mysql数据库的缓存
查看>>