1. md5 дает на 100% уникальное значение? 2. в БД записываю ключевым полем md5 от строки - в базу пишет какието числа не 16-тиричные. почему? будут ли они уникальны? Актуальный вопрос топика Создаю для текстового поля уникальный индекс. Уникальным индексом для него будет md5() от этого текстового поля. В БД уникальным индексом записываю md5() от этого текстового поля, но в БД записывается число не то которое создает md5() (не число в 16-тиричнойсистеме ) от даного текстового значения. Вопрос 1. Что за число записывается в таблицу БД? 2. Будет ли это число уникальным?
md5 от строки дает Код (Text): 32ac521980a1d6663ea2eb969bbf6c06 а в таблицу БД записывает какое-то число. почему число? будет ли это число уникальным?[/quote]
Потому что md5 - число. Если хочешь записать его как есть в виде строки, то тип поля сделай CHAR (32).
Sergey89 знаю, что число в 16 системе. но в таблицу Mysql при bigint(20) записывает не 16 ричным числом. почему? записывате обычным. мускул сам автоматом переводит из 16 ричной системы в 10 ричную?
ну в принципе если посчитать... хеш md5 - это 128 бит. bigint - 63 бита (и один знаковый). оно влезет? ЗЫ bigint(20) - 20 это колво знаков отображаемое в какой нибудь консольке, если не ошибаюсь.
Не varchar, a char(32). Не нужно использовать варчары там, где можно чары joost, уникальный индекс можно и по char-у построить.
[sql] ALTER TABLE `table_name` ADD UNIQUE (`field_name`) [/sql] А смысл? md5 влезает в char(32) отлично
joost, уникальный индекс по большому тексту делать не рекомендую а Сhar(32) он вполне схавает. Да самый обыкновенный... Мы быть может друг друга не понимаем? Под `field_name` подразумевалось имя столбца по которому создаетмся уникальный индекс...