Есть таблица t1 типа
CREATE TABLE t1 (id INT NOT NULL AUTO_INCREMENT, PRIMARY KEY (id));
в нее нужно добалять записи.
И есть таблица t2 типа(max_id
CREATE TABLE t2 (max_id INT);
которая содержит только одну запись - максимальный id в таблице t1.
Структуру таблиц и принцип работы менять нельзя.
Задача: написать запрос атомарно добаляющий одну запись в таблицу t1
и изменяющий запись в таблице t2. Что то типа того:
BEGIN;
INSERT INTO t1 (id) VALUES (null);
UPDATE t2 SET max_id=LAST_INSERT_ID();
COMMIT;
В случае если проходят две параллельных транзакции, первая выполнила begin/insert, тут полностью отработала вторая и первая выполнила update/commit, то таблица t2 будет содержать не максимальный id.
Вопрос как это можно побороть ?!!
С LOCK TABLES ничерта не получается, если до begin заблокировать таблицу t2, то такое впечатление что begin снимает блокировку...
Похожие темы
- Форум MySQL: multiple insert (2008)
- Форум [MySQL] кодировка передаваемых в процедуру параметров. (2011)
- Форум [mysql] Чудо (2010)
- Форум MySQL, INSERT ... SELECT ... FROM DUAL (2012)
- Форум MySQL, ошибка 150. (2013)
- Форум Хранить историю изменений таблицы - другая таблица с ключом актуальной версии [SQL] (2022)
- Форум yoyo migrations не может развернуть БД на mysql (2020)
- Форум Как составить такой sql запрос? (2012)
- Форум Сложная Модель Yii2 (2023)
- Форум переустановить auto_increment (2010)