我有3个用户的代码和测试
<?php
mysql_query("BEGIN");
$r=mysql_query("SELECT max(Ticket) from ticket FOR UPDATE");
$row=mysql_fetch_row($r);
$k=$row[0];
echo $k;
for ($j=1;$j<100000;$j++) {
$k++;
$r=mysql_query("insert into ticket (Ticket) values ('$k')");
}
mysql_query("COMMIT");
?>
我希望看到这个结果
user1 0
user2 9999
user3 19998
但我看到了这个结果
user1 0
user1 **9999**
user3 **9999**
即使我有一个select for update
,似乎user2和user3同时运行代码答案 0 :(得分:0)
InnoDB在执行select ... for update
时使用行级锁定,即只影响现有行。
您需要的是MySQL的AUTO_INCREMENT
功能。