Сгенерировать автоматически увеличивающуюся строку с несколькими выполнениями - PullRequest
1 голос
/ 08 октября 2019

Я пытаюсь сгенерировать номера счетов с автоматическим приращением: 2019-0001, 2019-0002 и т. Д.

Код работает нормально, но проблема возникает в условиях гонки. Если платежи происходят одновременно, мне иногда оставляют дубликаты номеров счетов.

Я думал только о создании поля auto_increment в базе данных, но у нас есть требование, которое позволяет пользователю устанавливать начальный номер счета. Например, пользователь может установить свои счета-фактуры, чтобы они начинались с 2019-0002, а затем увеличиваться оттуда.

Есть ли простой способ избежать дубликатов?

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

1 Ответ

0 голосов
/ 08 октября 2019

Возможно, стоит проверить это: Как установить начальное значение и автоинкремент в MySQL? . Вы можете установить начальное значение автоинкремента, просто изменив таблицу.

Что касается условий гонки, чтобы избежать подобных вещей, люди реализовали нечто, называемое «блокировкой», для получения дополнительной информации об этом,посмотрите здесь: https://symfony.com/doc/current/components/lock.html

...