gpt4 book ai didi

mysql - 更新更新触发器中的其他行

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

我想在更新后更新某些行中的order_key。一般来说,这是我的想法:

CREATE TRIGGER `trigger_numbers_before_update` BEFORE UPDATE ON `numbers`
FOR EACH ROW BEGIN
IF NEW.order_key <> OLD.order_key THEN
UPDATE `numbers` set `order_key` = `order_key`+1 where `order_key` >= NEW.order_key AND `book_id`=NEW.book_id;
END IF;
END

但是我得到了一个错误:

Error: SQLSTATE[HY000]: General error: 1442 Can't update table 'numbers' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.

我认为这只是意味着无限循环。那么,除了在更新后从 PHP 触发 SQL 函数之外,您是否知道一些正确的方法?

最佳答案

没有。这不是无限循环。

这是 MySQL 对触发器内可以执行哪些操作的限制。

无法从 numbers 上的 UPDATE 触发器内执行此类 UPDATE 操作(对 numbers 中的行)。并且您无法将 UPDATE 语句移至函数,然后从触发器中调用该函数...无法使用触发器的执行上下文执行 UPDATE。

要执行此更新,需要在触发器的执行上下文之外执行更新。

<小时/>

此答案中没有解决的是您为什么要首先执行此类操作的问题。

关于mysql - 更新更新触发器中的其他行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38271533/

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