MySQL:删除忽略外键约束的行

Xav*_*_Ex 44 mysql foreign-keys

所以我正在研究几个表,它们之间存在一些数据不一致...一个或两个表在特定表上有一个外键约束(称之为表X),但该表有多行与外键列.

我想要做的是删除表X中的重复行,但外键约束阻止我这样做.有没有办法强制删除行而忽略外键约束,因为我知道我在做什么?

Mat*_*dge 125

SET foreign_key_checks = 0;

这将阻止MySQL检查外键.完成后,确保将其重新设置为1.

此外,您可以随时删除外键,如果您只想影响单个键,则可以稍后添加

ALTER TABLE tableName DROP FOREIGN KEY fk;

  • 请记住,这将留下孤立行,它不会强制删除任何子记录。 (4认同)
  • 我想如果您立即退出会话,则不必将外键检查设置为1. (3认同)

小智 16

只需执行如下:

  1. 禁用外键检查

    设置foreign_key_checks = 0;

  2. 删除您的记录

    DELETE FROM table_name WHERE {条件};

  3. 启用外键检查

    设置foreign_key_checks = 1;

信用: https: //www.knowledgewalls.com/johnpeter/books/mysql/how-to-ignore-constraints-while-insertupdate-or-delete-records-in-mysql