Это плохая идея полагаться на ошибку MySQL для повторной попытки вставки?
Нет. Идите вперед, используйте его, если хотите. На самом деле, многие люди думают, что если вы проверите, и если он не существует, его безопасно вставить. Но если вы не заблокируете таблицу, всегда возможно, что другой процесс может сработать и получить идентификатор.
Итак, генерируйте случайный идентификатор, если он соответствует вашим целям. Просто убедитесь, что вы тестируете свой код, чтобы он правильно обрабатывал ошибки. Также может быть полезно регистрировать дуплики только для того, чтобы убедиться, что ваши предположения о том, как происходят несвязанные дуплицы, верны.