Я использую C ++ и MySQL.
У меня есть объекты данных, которые я хочу сохранить в базе данных. Они должны иметь уникальный идентификатор для идентификации. Вопрос в том, как получить этот уникальный идентификатор?
Вот что я придумал:
1) Используйте функцию auto_increment в MySQL. Но как получить удостоверение личности тогда? Мне известно, что MySQL предлагает эту функцию «SELECT LAST_INSERT_ID ()», но это будет условием гонки, поскольку два объекта могут быть вставлены довольно быстро друг за другом. Кроме того, нет ничего, что делает объекты различимыми. Два объекта могут быть созданы практически одновременно с одинаковыми данными.
2) Создайте UID на стороне C ++. Никаких кубиков тоже. Есть несколько программ, которые будут писать и читать из базы данных, которые не знают друг друга.
3) Вставьте с MAX (uid) +1 в качестве значения uid. Но тогда у меня в основном та же проблема, что и в 1), потому что у нас все еще есть условие гонки.
Теперь я в тупике. Я предполагаю, что с этой проблемой сталкивались и другие люди, но пока я не нашел ответов.
Есть идеи?