gpt4 book ai didi

MySql忽略外键错误

转载 作者:可可西里 更新时间:2023-11-01 08:31:20 25 4
gpt4 key购买 nike

我有一个包含大量数据的表。该表中的 PK 在其他 7 个表中被引用(每个表也包含大量数据)。现在,由于主表和其他 7 个表之间从来没有任何 FK,我必须找到一种方法从主表中删除所有其他 7 个表中的任何其他行未引用的行。这就是我的想法(所有解决方案都应使用存储过程实现):

0)“从 id 不在 (select .. table 1) 且不在 (select..table2)...table 7 的主表中删除”是不可能的,它需要很长时间才能完成。

1) 创建一个存储过程,该过程将在所有 7 个表中生成不同的、逗号分隔的已用 ID 集,并从主表中删除任何集合中不存在的那些 ID。

2) 在这 7 个表中的每一个中创建一个“限制”FK 并执行“从 main_table 中删除”。

解决方案 2 对我来说听起来最好,但我有一个问题 - 我不知道如何告诉 mysql “从主表中删除但跳过抛出 FK 异常的行”:\不能使用“删除忽略”,因为它会在遇到抛出 FK 错误的行时立即停止删除。

所以,我不得不问你:有没有办法让我在这 7 个表中的每一个上创建“限制”FK 并运行“从 main_table 中删除”并使用一些选项,该选项将简单地跳过任何抛出“FK”的行约束”错误?

最佳答案

您可以使用此处提供的一些资源:

How to temporarily disable a foreign key constraint in MySQL?

http://gauravsohoni.wordpress.com/2009/03/09/mysql-disable-foreign-key-checks-or-constraints/

简而言之,您可以禁用或删除外键约束:

ALTER TABLE table1 DROP FOREIGN KEY fk_name1;//摆脱当前约束ALTER TABLE table2 DROP FOREIGN KEY fk_name2;

SET FOREIGN_KEY_CHECKS=0;//在你删除之前

SET FOREIGN_KEY_CHECKS=1;//在你删除之后

关于MySql忽略外键错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26014500/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com