Здравствуйте!
Уже несколько дней подряд сражаюсь с проблемой deadlock'a. И никак не могу найти альтернативу. Дело в том, что ловлю оной на запросе вида
INSERT .. SELECT.
Весь запрос выглядит примерно так:
INSERT INTO `items` (quantity) VALUES(SELECT count(*) FROM `items`)
Так извращаться пришлось потому что, значение quantity -- зависит от счетчика row из этой-же таблицы. И если разделить этот запрос на два (отдельно взять посчитанные row и отдельно записать - стыкаюсь с проблемой того что этот
COUNT неправильный, и бывают случаи когда база отдает одно и тоже значение дважды).
В случае с запросом, который я продемонстрировал выше -- все отлично работает. Но есть одно НО которое я и хочу пофиксать. Иногда, вылетает ошибка
(40001 - 1213 - Deadlock found when trying to get lock; try restarting transaction)
Транзакции не помогают. Застопорился и не могу найти решение.
Заранее спасибо за ответы.