怎么删除mysql中的所有外键

怎么删除mysql中的所有外键,第1张

在删除那个把该外键作为主键的表之前,你先把包含外键的那个表中的外键全部删掉,置为null,或者直接将那列删掉,这样就没有地方引用这些外键,你就可以将那个表删除掉了。希望可以帮忙。记得以前做过类似的东西,删除将外键作为主键的表之前,必须将引用到这个键的内容置空,即没有引用该键,这样便可以删除了。

语法:ALTER TABLE <表名>DROP CONSTRAINT <外键名>

例子

mysql>CREATE TABLE categories (

->category_id tinyint(3) unsigned NOT NULL AUTO_INCREMENT,

->name varchar(30) NOT NULL,

->PRIMARY KEY(category_id)

->) ENGINE=INNODB

mysql>CREATE TABLE articles (

->article_id INT(11) unsigned NOT NULL AUTO_INCREMENT,

->title varchar(255) NOT NULL,

->category_id tinyint(3) unsigned NOT NULL,

->member_id int(11) unsigned NOT NULL,

->INDEX (category_id),

->FOREIGN KEY (category_id) REFERENCES categories (category_id),

->PRIMARY KEY(article_id)

->) ENGINE=INNODB

外键名是什么:在上面的例子中category_id

那就需要先删除主表里的记录,再删除子表里的记录。

比如有如下数据:

A表

uid  name

1    张三

2    李四

B表

uid  科目  分数

1     数学   90

1     语文   80

2     数学   70

2     语文   60

现在要删除A表里张三的记录,如果有外键,直接

delete from A where uid=1

这样是删除不了的。

所以要先删除B表里uid=1的记录再执行上边这句

delete from B where uid=1

然后再执行

delete from A where uid=1

就可以了


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5916903.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-08
下一篇 2023-03-08

发表评论

登录后才能评论

评论列表(0条)

保存