如何锁定单行

svk*_*svk 22 mysql myisam locking

我有一user张有田地的桌子lastusedecnumber.

我需要访问和增加lastusedecnumber.

在访问时间期间,我需要锁定该特定用户行(而不是整个表).

我该怎么做呢?

表类型是MyISAM.

bel*_*ood 24

MySQL仅使用MyISAM表中的表级锁定.如果可以,请切换到InnoDB以进行行级锁定.

这是一个MySQL站点的链接,描述了由InnoDB表的SQL语句设置的锁. http://dev.mysql.com/doc/refman/5.0/en/innodb-locks-set.html


Ale*_*tch 6

有点晚了,但希望它能帮助别人:

UPDATE user SET lastusedecnumber = LAST_INSERT_ID(lastusedecnumber + 1);
SELECT LAST_INSERT_ID();
Run Code Online (Sandbox Code Playgroud)

将为您提供lastusedecnumber 的原子增量,并能够lastusedecnumber使用 读取字段的新值(增量后)SELECT LAST_INSERT_ID()