Как мне заблокировать таблицы mysql в php? В настоящее время у меня есть этот код:
$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;
}
?>
Я пытаюсь проверить, есть ли по-прежнему проблемы с параллелизмом, выполнив один и тот же сценарий в двух браузерах. Приведенный выше сценарий вставляет 400+ записей вместо 999 записей. Как правильно заблокировать стол, пока что-то в него вставляю.
Я хочу заблокировать таблицу, чтобы предотвратить подобное:
Как видите, поле с префиксом «OC» должно иметь номер, равный автоинкрементному первичному ключу.