AUTO INCREMENT делает то, что ты навелосипедил в своей транзакции если что
Ну, это ни совсем я.
Я просто пытаюсь исправить чужой косяк.
Объяснять всю логик не буду. Но смысл в том, что есть поле, которому нельзя задать auto increment.
Да, бывают такие ситуации.
Например, если есть таблица обращений. Назовем ее appeals.
В этой таблице есть поле id и оно под auto increment'ом.
Третьим полем этой таблицы, которое я хочу обозначить является поле create. Как ни странно, там хранится дата создания обращения.
Так же имеется мое "любимое поле" number. Условие состоит в том, что поле number должно увеличиваться в рамках текущего года.
Т.е. надо чтобы в рамках 2020 года number инкрементировалось относительно максимального number в этом году.
Я нашел 2 варианта решения проблемы:
1. Создать новую таблицу, напирмер number_year_max. И в нех ранить это максимальное число.
2. Делать все это в одной транзакции.
Мне понравился второй вариант.
Но только мне не ясно, почему оно работает. Уровень изоляции у меня repeatable read.