Задать вопрос
@trytrytry

Как создать уникальный идентификатор, не используя последовательность?

единственное , что я придумал, это находить максимальное значение столбца и к нему прибавлять единицу. Не могли ли бы вы подсказать еще какие-нибудь способы?( они могут быть не эффективными)
  • Вопрос задан
  • 4454 просмотра
Подписаться 2 Оценить 1 комментарий
Пригласить эксперта
Ответы на вопрос 5
@HellBit
При создании использовать текущую дату.
Ответ написан
@trytrytry Автор вопроса
а если идентификатор просто число?
Ответ написан
Комментировать
@WDev
Не стоит ничего выдумывать. GUID (UUID). Посмотрите в Вики. Это стандарт. Функции для расчета также есть для разных языков.
Ответ написан
Комментировать
savostin
@savostin
Еще один программист
Вы бы уточнили цель конечную.
Если надо постоянно генерировать, то GUID или UUID, как выше посоветовали.
Если, скажем, нужно сгенерить конечное число идентификаторов, то идете на random.org и гребете лопатой.
Если, как Вы говорите, только числа, и постоянно генерировать, да еще и SQL, как Вы указали, то не вижу другого способа, как делать random и проверять до изнеможения был ли уже такой в базе. Ну или взять заранее N, а лучше M чисел с random.org и по одному оттуда вставлять в базу. Правда не знаю что будет, когда они закончатся ;)
Ответ написан
Комментировать
@Geny
единственное , что я придумал, это находить максимальное значение столбца и к нему прибавлять единицу. Не могли ли бы вы подсказать еще какие-нибудь способы?( они могут быть не эффективными)


Без select ... for update - это не безопасно, с ним не эффективно...,))
timestamp можно попробовать.. если нужно число, то что-нить такое сделать
select to_number(TO_CHAR(current_timestamp, 'SSSSSSSSSSSS')) from dual это более эффективно, чем select ... for update
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы