MySQL删除外键约束问题。

  • 当我们在一个表中添加字段约束的时候:
ALTER TABLE product ADD CONSTRAINT product_fk FOREIGN KEY(category_id) REFERENCES category(id);
  • 会认为我的外键约束名称为product_fk, 然后当我们想删除时:
ALTER TABLE product DROP FOREIGN KEY product_fk;
  • 会出现以下的错误:
<e>Query: alter table product drop foreign key product_fk

Error Code: 1025
Error on rename of '.\web_day09\product' to '.\web_day09\#sql2-2330-1' (errno: 152)
  • 这是因为字段的外键约束名并不是product_fk 。

  • 我们在数据库中执行一下命令:

SHOW CREATE TABLE product
  • 控制台会显示:
Table	Create Table
product	CREATE TABLE `product` (
  `pid` varchar(32) NOT NULL,
  `pname` varchar(40) DEFAULT NULL,
  `price` double DEFAULT NULL,
  `category_id` varchar(32) DEFAULT NULL,
  PRIMARY KEY (`pid`),
  KEY `category_id` (`category_id`),
  CONSTRAINT `product_ibfk_1` FOREIGN KEY (`category_id`) REFERENCES `category` (`cid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
  • 从建表语句中我们发现外键约束名称是:
    product_ibfk_1

  • 然后我们再执行外键删除操作:

<n>Query: alter table product drop foreign key product_ibfk_1

0 row(s) affected
  • 删除成功。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值