Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2909809
  • 博文数量: 199
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 4126
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-06 19:06
个人简介

半个PostgreSQL DBA,热衷于数据库相关的技术。我的ppt分享https://pan.baidu.com/s/1eRQsdAa https://github.com/chenhuajun https://chenhuajun.github.io

文章分类

全部博文(199)

文章存档

2020年(5)

2019年(1)

2018年(12)

2017年(23)

2016年(43)

2015年(51)

2014年(27)

2013年(21)

2011年(1)

2010年(4)

2009年(5)

2008年(6)

分类: Mysql/postgreSQL

2016-03-24 11:59:04

今天发现按照标准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)

这也太坑了,不支持就应该报个错啊!
                                  
阅读(2126) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~