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



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

下面是 SQL:

 START TRANSACTION;
  -- Let's get the current value
  SELECT serial FROM boxLabelSerial FOR UPDATE;
   -- Increment the counter
  UPDATE boxLabelSerial SET serial = serial + 1;
  COMMIT;

谢谢。

但是,如果你要重新发明轮子,你需要将音调语句的值"携带"到另一个。 变量是执行此操作的一种方法:

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只有一行时,您的方法才有效。

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

最新更新