在我的应用程序中,我想从一个InnoDB表中取一个值,然后在单个事务中递增并返回它。我还想锁定我要更新的行,以防止另一个会话在事务期间更改该值。我编写了以下查询:
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
BEGIN TRANSACTION;
SELECT @no:=`value` FROM `counter` where name='booking' FOR UPDATE;
UPDATE `counter` SET `value` = `value` + 1 where `name`='booking';
SELECT @no;
COMMIT;
我想知道隔离级别是否正确,是否需要使用“FOR UPDATE”语句。我的做法正确吗?