Триггер для генерации уникального хеша md5 перед вставкой - PullRequest
1 голос
/ 19 октября 2011

Я пытаюсь создать триггер, который будет привязывать уникальную случайную строку к каждой записи, вставленной в таблицу.

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

Пока у меня есть триггер ниже, но, как вы можете видеть, уникальная часть отсутствует ...

BEGIN
DECLARE newhash VARCHAR(255);
SELECT MD5(CONCAT(NOW(),RAND())) INTO newhash;
SET NEW.`hash` = newhash;
END

1 Ответ

1 голос
/ 19 октября 2011

Столбец должен быть уникальным в определении таблицы и все.

В любом случае, уверены ли вы, что хотите md5 (теперь || rand)?При разумных реализациях now и rand маловероятно, что у вас будут дубликаты, но если now () не имеет большой детализации или случайное число не является хорошим случайным числом, вы можете столкнуться с проблемой при определенных условиях.сценарии.

Возможно, было бы лучше использовать готовую схему для таких вещей, как, например, использование UUID (которые MySQL поддерживает: http://dev.mysql.com/doc/refman/5.0/en/miscellaneous-functions.html#function_uuid).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...