Возникла задача делать вставку строки в таблицу основываясь на данных из предыдущей строки этой таблицы.
Погуглил на тему блокировок, транзакций и триггеров - узнал много нового и полезного, но вот так сходу определиться так и не удалось. Решил спросить совета здесь.
Собственно наверное проще будет объяснить на примере. Если делать всё по простому то получится два запроса:
<?
$result = mysql_query("SELECT value FROM my_table ORDER BY id DESC LIMIT 1");
$row = mysql_fetch_assoc($result);
$value = $row['value']+1;
$query = mysql_query("INSERT INTO my_table (value) VALUES ('$value')");
Но может возникнуть ситуация когда после выполнения первого запроса произошла вставка спровоцированная другим пользователем и данные в переменной $value уже будут устаревшими. Пока вижу только вариант с блокированием на чтение и запись всей таблицы.
Может есть более элегантное решение данной проблемы?
Возможно я не доконца понял логику работы транзаций в MySQL и можно воспользоваться этим инструментом?