gpt4 book ai didi

mysql - 无法在 FROM 子句中指定更新目标表 'my_table'

转载 作者:行者123 更新时间:2023-11-29 12:35:12 26 4
gpt4 key购买 nike

我正在尝试创建一个 SQL 触发器,它在更新表后将执行一段 SQl 来再次更新它

我有 5 个可以更新的字段,每个字段都包含 0 或 1:

step1_complete, step2_complete, step3_complete, step4_complete and step5_complete

更新任何这些列后,我想运行一个触发器,该触发器将使用以下查询更新同一个表中的percent_complete:

SELECT sum( step1_complete + 
step2_complete +
step3_complete +
step4_complete +
step5_complete ) * 20 AS Sum
FROM completed_part
GROUP BY id

此查询将返回 20、40、60、80 或 100,这是我所期望的,但是当我尝试运行更新查询以查看它是否有效时,我收到此错误消息

#1093 - You can't specify target table 'completed_part' for update in FROM clause

我还想知道这是否是创建触发器的正确​​语法

DELIMITER $$

CREATE
TRIGGER `completed_part_after_update` AFTER UPDATE
ON `completed_part`
FOR EACH ROW BEGIN

UPDATE completed_part
SET percent_complete = (
SELECT sum( step1_complete +
step2_complete +
step3_complete +
step4_complete +
step5_complete ) * 20 AS Sum
FROM completed_part
GROUP BY id
);

END$$

DELIMITER ;

最佳答案

尝试使用更新前

BEGIN

SET NEW.percent_complete = ( NEW.step1_complete + NEW.step2_complete + NEW.step3_complete + NEW.step4_complete + NEW.step5_complete ) * 20;

END

关于mysql - 无法在 FROM 子句中指定更新目标表 'my_table',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26891589/

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