Итак, представьте себе таблицу mysql с несколькими простыми столбцами, автоинкрементом и хешем (varchar, UNIQUE).
Можно ли дать mysql запрос, который добавит столбец, и сгенерироватьуникальный хеш без множественных запросов?
В настоящее время единственный способ, которым я могу придумать, - это какое-то время, и я беспокоюсь, что чем больше записей будет в базе данных, тем больше будет загрузка процессора.
Вот несколько псевдо-php, которые явно не проверены, но дают общее представление:
while(!query("INSERT INTO table (hash) VALUES (".generate_hash().");")){
//found conflict, try again.
}
В вышеприведенном примере столбец хеш-функции будет УНИКАЛЬНЫМ, и поэтому запрос не будет выполнен.Проблема в том, что, скажем, в БД 500 000 записей, и я работаю с хеш-генератором base36 с 4 символами.Вероятность конфликта была бы почти 1 к 3, и я определенно не могу выполнить 160 000 запросов.Фактически, больше 5 я бы посчитал неприемлемым.
Итак, могу ли я сделать это с помощью чистого SQL?Мне нужно сгенерировать base62, 6-символьную строку (например: "j8Du7X", chars az, AZ и 0-9) и либо обновить ее last_insert_id, либо, что еще лучше, сгенерировать ее во время вставки.
Я могу справиться с базовым CRUD с MySQL, но даже JOIN-ы находятся за пределами моей комфортной зоны MySQL, так что извините за мое невежество, если это торт.
Есть идеи?Я бы предпочел использовать либо чистый MySQL, либо PHP & MySQL, но, черт возьми, если другой язык может сделать это чисто, я бы собрал скрипт и AJAX тоже.
Спасибо!