如何在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