如何在php中锁定mysql表?我目前有这样的代码:如何在php中锁定mysql表
$db->query("LOCK TABLES tbl_othercharge WRITE");
for($x=0;$x<=500; $x++){
$id = get_max();
$db->query("INSERT INTO tbl_othercharge SET tblocID = '$id', assessmentID='lock1'");
}
$db->query("UNLOCK TABLES");
这里是get_max()函数,如果上面的脚本同时执行,显然会失败。
<?php
function get_max(){
global $db;
$max = $db->get_var("SELECT MAX(tblocNumber) FROM tbl_othercharge");
if($max == null){
$max = 1;
}else if($max >= 1){
$max = $max + 1;
}
return 'OC'.$max;
}
?>
我想通过在2浏览器上执行相同的脚本来测试是否仍有并发问题。 上面的脚本插入400+条记录而不是999条记录。我在插入东西时如何正确锁定桌子。
我想锁定表,以防止这样的事情发生:
正如你可以看到带有前缀“OC”的领域上它应该有一个数字,它等于自动递增首要的关键。
为什么要锁定表格? – 2011-12-20 13:26:07
InnoDB存储引擎和事务怎么样? – CodeZombie 2011-12-20 13:27:52
@EugenRieck:请参阅我的编辑 – 2011-12-20 13:29:37