| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > MySQL > Как задать случайный первичный ключ? |
| Автор: AztEK 15.3.2008, 19:12 | ||
Мне нужно рализовать следующее: таблица, у каждой записи которой первичным ключом является число от 1000 до 9999. При вставке новой записи, её ключ должен вычисляться случайным образом. Первый пришедший мне в голову запрос
понятное дело, не работает — иногда ключи дублируется и возникает ошибка. Проверять на уровне PHP свободный ключ мне кажется слишком долго, особенно при большом количестве записей. Подскажите, как можно сделать лучше? |
| Автор: AztEK 15.3.2008, 20:25 | ||||
Делаю доску объявлений. Хочется, чтобы номер только что добавленного объявления не отображал количества уже добавленных. Создаётся иллюзия, что объявлений на сайте больше, чем на самом деле. Такое есть во многих сервисах. Может быть, делать это на уровне БД — не лучшее решение, но другого я пока не могу придумать. P.S. Если я неправильно использую понятие «первичный ключ» — извините. Имеется в виду некий идентификатор объявления. |
| Автор: SelenIT 15.3.2008, 20:50 |
| AztEK, а просто начать автоинкремент с 1000 или 1234 (auto_increment=… при создании таблицы) не выход? |
| Автор: AztEK 15.3.2008, 22:02 | ||
Немного не то, но в принципе на крайняк — выход. Да и из принципа охота разобраться |
| Автор: skyboy 15.3.2008, 22:21 |
| AztEK, через триггеры можно сделать. только такой первичный ключ - в топку. замедляет добавление, никак не ускорит(а в сравнении с "обычным"автоинкрементным вариантом - существенно замедлит) выборку, особенно - из нескольких связанных таблиц... да и от кого ты хочешь "прятать" идентификатор записи? от php-скрипта? если от человека, то пусть PHP-скрипт возвращает не id, а id * id + id. или вообще - md5(id). или ещё как. зачем пихать случайно генерируемые данные в БД - не понимаю. пусть идентификатор будет вычисляемым... хотя, способ, предложенный SelenIT'ом намного проще и с тем же эффектом... |