mysql如何删除一个外键

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql如何删除一个外键相关的知识,希望对你有一定的参考价值。

用此语句add foreign key(列名) references 表名(列名)为表添加一个外键后如何删除这个外键,外键名是什么。

参考技术A 语法: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

MySQL 如何删除有外键约束的表数据

在MySQL中删除一张表或一条数据的时候,出现
[Err] 1451 -Cannot deleteorupdatea parent row:
aforeignkeyconstraintfails (...)

这是因为MySQL中设置了foreign key关联,造成无法更新或删除数据。可以通过设置FOREIGN_KEY_CHECKS变量来避免这种情况。

禁用外键约束,我们可以使用:

SET FOREIGN_KEY_CHECKS=0;

然后再删除数据

启动外键约束,我们可以使用:
SET FOREIGN_KEY_CHECKS=1;

查看当前FOREIGN_KEY_CHECKS的值,可用如下命令:
SELECT @@FOREIGN_KEY_CHECKS;

以上是关于mysql如何删除一个外键的主要内容,如果未能解决你的问题,请参考以下文章

如何在删除时处理 MySql + Laravel 中的外键约束?

MySQL外键约束,级联删除

MySQL 如何删除有外键约束的表数据

MySQL 如何删除有外键约束的表数据

MySQL 如何删除有外键约束的表数据

mysql数据库怎么删除一个表的外键