触发在插入之前生成唯一的md5哈希

时间:2011-10-19 19:42:07

标签: mysql triggers unique-key

我正在尝试创建一个触发器,将一个唯一的随机字符串与插入表中的每个记录相关联。

到目前为止,我在插入之前创建了一个触发器,它将生成并将哈希添加到表中。但是,我想知道我该如何确保这个新哈希对我的表来说是唯一的

到目前为止,我有下面的触发器,但是你可以看到uniques部分丢失......

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

1 个答案:

答案 0 :(得分:1)

该列在表定义中应该是唯一的,就是它。

无论如何,你确定你想要md5(现在是|| rand)吗?通过now和rand的合理实现,你不太可能有重复,但如果now()没有很多粒度或随机数不是一个好的随机数,你可能会遇到麻烦场景。

对于这类事情使用现成的方案可能是更好的主意,例如使用UUID(MySQL似乎支持:http://dev.mysql.com/doc/refman/5.0/en/miscellaneous-functions.html#function_uuid)。