Я использую MySQL + PHP. У меня есть некоторый код, который генерирует платежи из таблицы автоматических платежей в зависимости от того, когда они должны быть выполнены (чтобы вы могли планировать будущие платежи ... и т. Д.). Автоматический сценарий запускается после активности на сайте и иногда запускается дважды одновременно. Чтобы избежать этого, мы генерируем uuid для платежа, когда для определенного автоматического платежа может быть только n-й платеж. Мы также используем транзакции для инкапсуляции всего процесса генерации платежей.
Как часть этого, нам нужно, чтобы вся транзакция потерпела неудачу, если есть дубликат uuid, но получение фактической ошибки базы данных покажет ошибку пользователю. Могу ли я использовать Insert Ignore в платежной вставке SQL? Будет ли предупреждение убить транзакцию? Если нет, как я могу завершить транзакцию при наличии дубликата uuid?
Чтобы уточнить: если INSERT завершается неудачно, как я могу заставить его не генерировать ошибку остановки программы, а завершить / откатить транзакцию?
Имейте в виду, вставка завершится неудачей при коммите, а не при первоначальном выполнении в php.
Большое спасибо!