gpt4 book ai didi

mysql - SQL:执行 UPDATE IGNORE 并删除重复项

转载 作者:行者123 更新时间:2023-11-29 13:18:18 25 4
gpt4 key购买 nike

假设我有下表,其中 PRIMARY_KEY 是 parent_id, child_id

parent_id | child_id
----------+---------
1 | 2
1 | 3

我想执行一个查询,该查询将更新行并删除可能的重复项,以便执行以下查询:

UPDATE IGNORE table SET child_id = 2 WHERE child_id = 3; 

会导致:

parent_id | child_id
----------+---------
1 | 2

我需要某种通用解决方案,以便我可以编写复杂的查询来实现此目的。

最佳答案

如果 MySQL 支持从同一个表上的触发器内修改表,那么解决方案将非常优雅。

CREATE TRIGGER prevent_duplicate BEFORE UPDATE ON table FOR EACH ROW
BEGIN
IF (SELECT COUNT(*) FROM table WHERE (parent_id, child_id) = (NEW.parent_id, NEW.child_id) > 0) THEN
DELETE FROM table WHERE (parent_id, child_id) = (OLD.parent_id, OLD.child_id);
END IF;
END;

由于它不支持此类功能,因此您可能需要更改应用程序逻辑才能实现相同的功能,或者为这些更新创建存储过程。

关于mysql - SQL:执行 UPDATE IGNORE 并删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21190743/

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