Я генерирую случайную 10-значную строку с php и вставляя ее в столбец в моей БД. Моя проблема в том, что я хочу, чтобы эта строка была уникальной (в базе данных). Я думал о многих способах сделать это, но интересно, какой путь является наиболее эффективным.Уникальное значение в непервичном поле
Мой PHP выглядит следующим образом (случайная строка может быть только длиной 10 символов):
//generates an almost unique(not quite) ticket number
$pretrimmedtask = md5(uniqid(mt_rand(),true));
$tasknum = substr($pretrimmedtask ,0,10);
мне взять это «уникальное» значение и вставьте его. Но из-за обрезки строки это значение никоим образом не является уникальным. Мне интересно, какой лучший способ удостовериться, что эта ценность никогда не может быть дублирована, хотя она все еще эффективна.
(Я понимаю, что запрашивая дб искать это значение там можно ... но я предпочел бы сделать это в более элегантной моды)
Важно ли, чтобы идентификатор был хешем, а не числом? – TimWolla
есть. Я бы предпочел, чтобы это был номер, но он должен быть хешем. – Kyle
Вы можете установить ключ UNIQUE в поле tasknum и уловить ошибки из системы db во время запроса, повторно генерируя значение tasknum и повторно вставляя при возникновении столкновений имен. – rdlowrey