2010-09-15 3 views
0

При создании уникальных пользовательских кодов ссылок (например, JOB1293XYZ) какое-то время я создавал специализированные ссылки/хэши в PHP, а затем проверял мою базу данных, чтобы узнать, существует ли она и если так что генерация другого.Создание уникального поля MySQL на основе содержимого других полей

Мне любопытно, если в MySQL можно сгенерировать содержимое поля на основе других полей в этой строке, я был бы удобным ярлыком. Для примера ...

Таблица: Сотрудники

  • EmployeeID
  • Firstname
  • ЬавЬЫате
  • jobTitle
  • DOB
  • employeeCode

Так что для employeeCode я могу, возможно, использовать пользовательскую функцию MySQL (о которой я очень мало знаю) для создания содержимого поля. возможно, взяв первую букву первого имени, первую букву второго имени, длину строки названия задания и две последние цифры DOB? Это просто пример.

Если это возможно, и любой может указать мне на любой ссылочный материал, который был бы замечательным, прошли через тяжелую документацию по MySQL и будут продолжать делать это пока.

Заранее благодарен!

+0

Почему бы не просто использовать поле «id» первичного ключа? Изменить: со второй мыслью, я не уверен, что я понимаю прецедент здесь. Вы просто хотите проверить, существует ли клиент на основе этих полей? Разве это не определение запроса? – bnaul

ответ

2

Вы можете объединить все поля вместе и сделать MD5 на полученной строке.

UPDATE Сотрудники SET md5str = MD5 (CONCAT (поле1, поле2, поле3)) ...

Я бы не рекомендовал этот подход, потому что тогда вопрос о том, что делать, если у вас хэш столкновения будет очень сложно, если не невозможно ответить.

Вышеупомянутая идея не моя: я заметил это в коде maatkit.

+0

Спасибо, мне было интересно, возможно ли возможно выполнить функцию после ввода строки. Я думаю, что я буду придерживаться этого в PHP :) Цените помощь независимо! –