Как надежно вставить в таблицу, а затем получить автономный номер в многопользовательской системе

Предположим, я запустил оператор вставки следующим образом:

        $sql = "insert into tbl_features (feature_class, feature_name, description) values (?, ?, ?)";
        $q = $pdo_conn->prepare($sql);
        $q->execute(array($_GET['new_feature_class'], $_GET['new_feature_name'], $_GET['new_description']));

Затем я хочу получить идентификатор строки, которая была только что вставлена, чтобы использовать ее в другой таблице. Я мог бы использовать select max(), но как я могу быть уверен, что никто другой не сделал вставку, таким образом давая обоим пользователям один и тот же максимум, чтобы попытаться втиснуть их в другие таблицы? Я рад заблокировать всю таблицу, код запускается достаточно редко, чтобы это не имело заметного значения. Может быть, я педантичен, но хочу спать по ночам, зная, что мой код пуленепробиваемый.

1 ответ

Решение

Вы можете использовать lastInsertId для его получения: http://php.net/manual/en/pdo.lastinsertid.php.

Другие вопросы по тегам