mysql - 如何在 MySQL 中删除带有循环外键的表

标签 mysql sql database

我有两张表,父表和子表。列 Parent.favorite_child 有一个指向 Child.id 的外键约束。并且 Child.parent 列有一个指向 Parent.id 的外键约束。

现在这是奇怪的部分。我试图删除我的 Child 表,该表不包含任何记录,但 MySQL 给我错误:

ERROR 1217: Cannot delete or update a parent row: a foreign key constraint fails
SQL Statement:
drop table `mydatabase`.`Child`

为什么 MySQL 会抛出这个错误? Child 表中几乎没有任何记录可以指向或来自。

最佳答案

需要先删除父表的外键,才能删除子表:

ALTER TABLE `Parent` DROP FOREIGN KEY `Parent_ibfk_1` ;

关于mysql - 如何在 MySQL 中删除带有循环外键的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7843296/

相关文章:

php - 如何使用 limit 子句对记录进行排序

mysql - 编写此 mysql 查询的正确方法

sql - 返回 Postgresql 中最多一列的行

Mysql - 按列选择最高值

java - 时间作为 SQL 的关键导致错误

php - Laravel 定义关系

mysql - 需要帮助进行玩家评分计算的数据库/查询设计

php - 只有使用 php 登录才能访问页面

sql - 当行可以包含 0 时计算百分比

mysql - 使用 != 而不是 < 时得到错误结果