首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当MySQL过程没有更新任何内容时,返回1受影响的行

当MySQL过程没有更新任何内容时,返回1受影响的行
EN

Stack Overflow用户
提问于 2013-03-29 17:10:04
回答 1查看 3.3K关注 0票数 0

我的mysql数据库中有以下存储过程:

代码语言:javascript
复制
BEGIN 
DECLARE useCount, remainingUses INT DEFAULT 0;

/* Get the current values for the quiz into the variables */
SELECT remaining_uses, use_count INTO remainingUses, useCount FROM quiz_passwords WHERE password_id  = passwordId;

/* Are there remaining uses to consume? */
if (remainingUses > 0) THEN

    UPDATE quiz_passwords SET use_count = (useCount + 1), remaining_uses = (remainingUses - 1) where password_id = passwordId;

END IF;

END

如您所见,只有当初始remainingUses语句中的select变量大于'0‘时,才应该执行update语句。

但是,当我调用过程CALL UsePassword(197);时,它返回Affected rows: 1

我不明白,当数据库中的id = 197密码行的值为'remaining_uses = 0‘时。

如果要在结果中显示Affected rows: 1,有什么原因吗?

如果语句被成功执行,它会返回一个受影响的行吗?因为在本例中,技术上没有执行UPDATE语句。

更新不仅没有更新,而且如果我完全删除update语句,它仍然告诉我有一个受影响的行!

谢谢

EN

回答 1

Stack Overflow用户

发布于 2013-03-30 08:20:44

最后,通过在存储过程中声明OUT变量,然后在SELECT语句之后设置它的值来返回值,从而解决了这个问题。

代码语言:javascript
复制
/* Return the affected rows */
SET affected_rows = ROW_COUNT();
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15708020

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档