我有一个SQL查询,它选择一个序列号,然后立即递增该序列号。问题是,当我运行该语句时,select在递增之后返回更新后的序列号。我希望它在更新之前返回序列号,然后执行更新并设置新的序列号。
下面是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;谢谢。
发布于 2016-01-19 21:08:37
但是,如果你打算重新发明轮子,你需要将值从tone语句“携带”到另一个语句。变量是实现此目的的一种方法:
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只有一行时,您的方法才有效。
发布于 2016-01-19 21:24:56
START TRANSACTION;
UPDATE boxLabelSerial SET LAST_INSERT_ID(serial) = serial + 1;
SELECT LAST_INSERT_ID() FOR UPDATE;
COMMIT;https://stackoverflow.com/questions/34877552
复制相似问题