MySQL - 尝试删除一对一关系的一侧

标签 mysql sql

我正在修改当前的数据库架构。我想删除一对一关系的子端,但我不断收到有关外键限制的 SQL 错误,具体来说:

#1217 - Cannot delete or update a parent row: a foreign key constraint fails

尽管目前似乎没有任何外键在起作用(子表完全是空的)。

有什么想法吗?

最佳答案

首先,从引用(子)表中删除外键约束,然后删除引用(父)表。

例如:

ALTER TABLE child
  DROP FOREIGN KEY FK_child_parent ;

DROP TABLE parent ;

(显然,您需要将“child”、“parent”和“FK_child_parent”替换为表和外键约束的实际标识符。

获取外键约束名称的一种简单方法是使用 SHOW CREATE TABLE 语句,

SHOW CREATE TABLE child ;

输出将显示外键约束的名称。

如果您不知道哪些表有引用该表的外键,可以查询information_schema.referential_constraints表来查找它们

WHERE referenced_table_name = 'parent'
  AND constraint_schema = 'mydatabase'

关于MySQL - 尝试删除一对一关系的一侧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25046759/

相关文章:

sql - 如何查找不同表中的行数

mysql - 加速/制作更高效的 SQL

php - Laravel 迁移 - 列类型字符串不更新大小

javascript - 我想编写一段 javascript 代码来从 koha (An ILS) 获取数据

c# - LINQ - 嵌套计数问题

mysql - 将数据从表 A 插入表 B WHERE(条件)& SET Col.a = "xxx"

php - 如何从输入中获取值并在 PHP 查询中使用它?

php - 如果 ID 不在数据库中则插入记录,否则更新它

php - 删除除一个表之外的所有表?

mysql - 如何在select语句中选择列名