首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SELECT在SELECT - UPDATE事务期间返回更新值

问SELECT在SELECT - UPDATE事务期间返回更新值
EN

Stack Overflow用户
提问于 2016-01-19 21:03:09
回答 2查看 373关注 0票数 0

我有一个SQL查询,它选择一个序列号,然后立即递增该序列号。问题是,当我运行该语句时,select在递增之后返回更新后的序列号。我希望它在更新之前返回序列号,然后执行更新并设置新的序列号。

下面是SQL语句:

代码语言:javascript
复制
 START TRANSACTION;

  -- Let's get the current value
  SELECT serial FROM boxLabelSerial FOR UPDATE;

   -- Increment the counter
  UPDATE boxLabelSerial SET serial = serial + 1;

  COMMIT;

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2016-01-19 21:08:37

但是,如果你打算重新发明轮子,你需要将值从tone语句“携带”到另一个语句。变量是实现此目的的一种方法:

代码语言:javascript
复制
START TRANSACTION;

  -- Let's get the current value
  SELECT @s := serial FROM boxLabelSerial FOR UPDATE;

   -- Increment the counter
  UPDATE boxLabelSerial SET serial = @s + 1;

COMMIT;

注意:只有当您假设boxLabelSerial只有一行时,您的方法才有效。

票数 1
EN

Stack Overflow用户

发布于 2016-01-19 21:24:56

代码语言:javascript
复制
START TRANSACTION;

UPDATE boxLabelSerial SET LAST_INSERT_ID(serial) = serial + 1;
SELECT LAST_INSERT_ID() FOR UPDATE;

COMMIT;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34877552

复制
相关文章

相似问题

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