开发者

select for update and 3 users

I have this code and test with 3 users

<?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");
?>

I expect to see this result

user1 0

user2 9999

user3 19998

but i see this result

user1 0

user1 **9999**

user3 **9999**

it seems user2 and user3 ru开发者_JS百科n code at same time even if I have a select for update


InnoDB uses row-level locking when executing select ... for update, i.e. only existing rows are affected.

What you need is MySQL's AUTO_INCREMENT feature.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜