mysql删除外键约束的探究

如何彻底删除外键约束

今天就跟修改表这个操作干上了,虽然用的并不多,但是平时自己做实验的时候还是很有用滴。比如说这个添加和删除外键。

添加外键

分为两步:

1. 添加相应列
ALTER TABLE goods 
ADD stuid INT;
2. 添加约束
ALTER TABLE goods 
ADD CONSTRAINT fk_stu_goo 
FOREIGN KEY(stuid)
REFERENCES stuinfo(id);
- 附加创建goods表的语句
DROP TABLE IF EXISTS goods;
CREATE TABLE IF NOT EXISTS goods(
 id INT PRIMARY KEY auto_increment,
 name VARCHAR(20) NOT NULL,
 price DOUBLE DEFAULT 0
);

添加约束很简单,删除约束也是分为两步。

删除外键

如下

1.删除外键约束
ALTER TABLE goods DROP FOREIGN KEY fk_stu_goo;
2.删除键值约束
ALTER TABLE goods DROP INDEX fk_stu_goo;

注意:只执行步骤1看似没有删除成功,起始删除了foreign key的约束。但是还有一个key的申明附加在外键的申明中执行。

实行1之后的表创建语句如下:可以看到有申明KEY `fk_stu_goo` (`stuid`)
CREATE TABLE `goods` (
  `id` int NOT NULL AUTO_INCREMENT,
  `name` varchar(20) NOT NULL,
  `price` double DEFAULT '0',
  `stuid` int DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `fk_stu_goo` (`stuid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

此时执行ALTER TABLE goods DROP stuid;会失败。因此需要执行2删除index索引。

参考链接

  • https://blog.csdn.net/u012430402/article/details/80337486
  • https://blog.csdn.net/qq_35604488/article/details/90573415

庄周晓梦迷蝴蝶,望帝春心托杜鹃。 ——李商隐

猜你喜欢

转载自blog.csdn.net/weixin_37627774/article/details/107541813
今日推荐