Откат транзакции Laravel

Проблема с откатом laravel в том, что идентификатор всегда увеличивается, даже если множественная вставка в БД не удалась.

Например, я использую транзакцию laravel для вставки двух моделей. Последний идентификатор модели 1 равен 5, а последний идентификатор модели 2 равен 10, при запуске обычной транзакции результатом будет вставленный объект из модели 1 — 6, а для модели 2 — 11.

Для второй вставки вставляется модель 1, а новый идентификатор равен 7, но вставка модели 2 не удалась, поэтому произойдет откат, но следующая вставка для модели 1 будет 9, а не 8, даже если она не удалась.

Хорошо, проблема в том, что идентификатор в БД (Mysql, движок innoDB) увеличивается, но это должно быть решение, когда он также откатывает идентификатор.

Кто-нибудь знает, как решить эту проблему? Спасибо.

Почему это проблема?

Paul Spiegel 08.03.2019 17:00

Если во вставке есть исключение, оно будет записано в файл журнала, поэтому нет необходимости прыгать по значению идентификатора в БД (который большой).

Mohamed Baklouti 08.03.2019 17:17

Это поведение базы данных по умолчанию, а не специфичное для laravel, это и это должны ответить на ваш вопрос.

Remul 08.03.2019 17:18

Спасибо @Remul, это было полезно. Идея ясна, это поведение базы данных по умолчанию.

Mohamed Baklouti 08.03.2019 17:29
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
4
58
0

Другие вопросы по теме