gpt4 book ai didi

mysql - 如何打破 MySQL 上过程之间的递归调用?

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

我有 2 个过程:AB

A 调用BB 调用A。如果该过程已被另一个过程调用,我需要阻止调用。如何检查?

最佳答案

MySQL user-defined variables对于您的 session 是全局的。

因此您可以在过程 A 中将变量设置为 TRUE,然后在过程 B 中检查它。

程序 A:

BEGIN
IF NOT @called = 1 THEN
SET @called := 1;
CALL B();
SET @called := NULL;
END IF;
END

程序 B:

BEGIN
IF NOT @called = 1 THEN
SET @called := 1;
CALL A();
SET @called := NULL;
END IF;
END

这些变量对于 session 来说是全局的,也就是说每个 session 都有自己的变量版本。因此,如果多个用户 session 正在调用过程,您不会遇到问题。

但是您确实遇到了一个问题,即用户定义的变量一直存在到当前 session 结束。这就是为什么我在调用另一个 proc 后将变量设置为 NULL。但是,如果 proc 在将变量设置为 NULL 之前被中断,则下次尝试调用 proc 时可能会得到一些错误的结果。

关于mysql - 如何打破 MySQL 上过程之间的递归调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18925209/

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