MySQL AUTO_INCREMENT не ROLLBACK - PullRequest
       60

MySQL AUTO_INCREMENT не ROLLBACK

58 голосов
/ 16 января 2009

Я использую поле MySQL AUTO_INCREMENT и InnoDB для поддержки транзакций. Я заметил, что при откате транзакции поле AUTO_INCREMENT не откатывается? Я узнал, что это было разработано таким образом, но есть ли обходные пути к этому?

Ответы [ 11 ]

0 голосов
/ 16 января 2009

Если вам нужно назначить идентификаторы в числовом порядке без пробелов, то вы не можете использовать столбец автоинкремента. Вам необходимо определить стандартный целочисленный столбец и использовать хранимую процедуру, которая вычисляет следующее число в последовательности вставки и вставляет запись в транзакцию. Если вставка завершится неудачно, то при следующем вызове процедуры она пересчитает следующий идентификатор.

Сказав это, плохая идея полагаться на то, что идентификаторы находятся в каком-то определенном порядке без пробелов. Если вам нужно сохранить порядок, вам, вероятно, следует поставить метку времени при вставке (и, возможно, при обновлении).

...