莫愁前路无知己,天下谁人不识君。。。。

Mysql---外键(Foreign key)注意两三事

上一篇 / 下一篇  2017-08-18 10:24:46 / 个人分类:数据库知识

Mysql增加外键时,加constraint与不加constraint时,有些区别,如下:
1.alter table a add foreign key abc(id) references b(id);
2.alter table a add constraint abc foreign key(id) references b(id);
对于增加外键,1或2都可以成功增加,但删除时,却稍有细微不同:如下
对于1,生成后查看表内容:
CREATE TABLE `td` (
`ipo` INT(11) NULL DEFAULT NULL,
`age` INT(10) NULL DEFAULT NULL,
`number` INT(10) NOT NULL DEFAULT '0',
`id` INT(11) NULL DEFAULT NULL,
INDEX `abc` (`id`),
CONSTRAINT `td_abc_1`FOREIGN KEY (`id`) REFERENCES `th` (`id`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB
对于2,生成后查看表内容:
CREATE TABLE `td` (
`ipo` INT(11) NULL DEFAULT NULL,
`age` INT(10) NULL DEFAULT NULL,
`number` INT(10) NOT NULL DEFAULT '0',
`id` INT(11) NULL DEFAULT NULL,
INDEX `abc` (`id`),
CONSTRAINT `abc`FOREIGN KEY (`id`) REFERENCES `th` (`id`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB

对于1生成的外键,当你删除它时,alter table td drop foreign key `abc`;会弹出 cannot drop foreign key,check key/column exists.
将`abc`改为`td_abc_1`,OK.
对于2,删除没有问题.所以增加外键用方法2比较合适.

TAG: 外键 MySQL Mysql

 

评分:0

我来说两句

Open Toolbar