mysql字段中的唯一哈希?

huwehgph  于 2021-06-15  发布在  Mysql
关注(0)|答案(1)|浏览(324)

mysql是否支持使用hashmd5或其他方法自动填充字段?
例如,我想使用表中照片的主键作为 hash ,以避免选择照片 id .

sd2nnvve

sd2nnvve1#

正如@mitchwheat所评论的,mysql支持各种加密函数:md5、sha、sha1和sha2。。。
但是,使用自动哈希作为主键并不是一个好的做法。
首先,一个自动递增的整数总是比一个散列更好;它更容易插入、访问和索引,而且需要较少的存储空间。另一件事是,通过使用散列,您将自己暴露在一个(小的,但真实的)冲突风险中。
其次,实现自动哈希比实现自动递增整数要困难得多。由于函数不能用作列默认值,因此需要使用触发器,可能还需要一个单独的表来进行排序。看看这个答案,看看这个设置的演示。
一个中间的选择是依赖于一个特定的字段或字段的组合,在插入(和更新)之前,您可以使用触发器自动散列这些字段来生成主键。
比如:

DELIMITER $$
CREATE TRIGGER tg_bi_table1
BEFORE INSERT ON table1
FOR EACH ROW
BEGIN
    SET NEW.id = MD5(CONCAT(NEW.field_to_hash1, NEW.field_to_hash2));
END$$
DELIMITER ;

相关问题