Кажется, что способ, которым вы пытаетесь использовать MD5, на самом деле не приносит вам никакой выгоды. Если «$ name» уникально, то почему бы просто не использовать «name» в качестве первичного ключа? Вычисление хеша MD5 и использование его в качестве ключа для чего-то уже уникального является излишним.
С другой стороны, если «имя» не уникально, то хеш MD5 также не будет уникальным, и поэтому бессмысленно и в этом случае.
Обычно вы используете хеш MD5, когда не хотите сохранять фактическое значение столбца. Например, если вы храните пароли, вы, как правило, храните только хеш-пароль MD5, а не сам пароль, поэтому вы не можете видеть пароли людей, просто взглянув на содержимое таблицы.
Если у вас нет уникальных полей, то вы застряли, делая что-то вроде автоинкремента, потому что это по крайней мере гарантировано уникальное. Если вы используете встроенный автоинкремент SQL, то вам просто нужно получить последний, так или иначе. С другой стороны, если вы можете избежать использования локального уникального счетчика в вашем приложении, это избавляет от необходимости использовать автоинкремент, но не всегда жизнеспособно для большинства приложений.