Как заблокировать таблицы mysql в php

Как мне заблокировать таблицы 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 записей. Как правильно заблокировать стол, пока что-то в него вставляю.

Я хочу заблокировать таблицу, чтобы предотвратить подобное: enter image description here

Как видите, поле с префиксом «OC» должно иметь номер, равный автоинкрементному первичному ключу.

5
задан Wern Ancheta 20 December 2011 в 13:29
поделиться