Генерация собственного уникального идентификатора записи

Статус
В этой теме нельзя размещать новые ответы.
думаю вам имеет смысл посмотреть в сторону транзакций и триггеров..
 
что в данном случае важно, транзакция даст вам гарантию уникальности автоинкремента после её коммита независимо от кол-ва параллельных транзакций (если, конечно, не случился принудительный или exception rollback).. собственно на него и можно неким образом опереться при генерации хэша (алгоритм подберите сами).. ну и саму генерацию и вставку хеша повесить на on after insert триггер таблицы.. примерно так..
 
Т.е. система будет циклиться, пока не сгенерит уникальный ИД? При достаточной нагрузке, я думаю, это может создавать длительные циклы?
 
нет, "циклится" не будет.. почитайте документацию про транзакциям.. если не понимаете, пишите в личку, растолкую..
 
Одновременно может обрабатываться больше одной транзакции, сначала чтение максимального ИД, генерация и вставка нового, потом коммит, но если паралельно обрабатывалась еще одна вставка, которая получила максимальный ИД до вставки первой нового максимального ИД, соответственно будет откат и следующая попытка. Прально ж?
 
вы действительно не понимаете суть транзакций, или шутите?..
 
Я понимаю, что такое транзакция. Если вас не затруднит в двух словах опишите, что вы имеете ввиду?
 
ОК, давайте разберемся, я генерирую идентификатор, и в случае коллизии буду делать откат транзакции, и повторно генерировать идентификатор, так? Если да, то непонятно сколько таких циклов будет при солидной нагрузке (плюс еще ограниченное время выполнения по ПХП).

Если я правильно понял, то тогда выгоднее лочить таблицу, хотя тот же гемор по времени выполнения ПХП и ожиданию пользователя.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху