gpt4 book ai didi

mysql - 更新存储过程中的表更新所有行

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

我在存储过程的末尾有以下简单的三行:

UPDATE `imthreadmember`
SET `lastUpdate`=CURRENT_TIMESTAMP
WHERE `threadId` = threadId;

但是在 proc 中运行它,更新 imthreadmember 中的所有行。在控制台中运行相同的三行,仅更新具有该 threadId 的行。在此语句返回正确 ID 之前插入 select threadId;

我已经迫不及待地想出如何解决这个问题了。

imthreadmember 中的行是在同一过程中较早创建的,但是由于 CURRENT_TIMESTAMP 只能用作每个表的默认值一次,我必须单独更新此列,默认转到 created 列。

最佳答案

变量的名称与列的名称相同。根据 MySQL 的作用域规则,该列将与其自身进行比较。

在存储过程中使用的所有 变量前加上v_ 是一个好习惯。所以查询应该是这样的:

UPDATE `imthreadmember`
SET `lastUpdate`=CURRENT_TIMESTAMP
WHERE `threadId` = v_threadId;

并且,作为推论,永远不要命名以 v_ 开头的列。

关于mysql - 更新存储过程中的表更新所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21530952/

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