gpt4 book ai didi

mysql - 确保 MYSQL/InnoDB 中大于 255 的 varchar 的唯一性

转载 作者:可可西里 更新时间:2023-11-01 07:57:13 24 4
gpt4 key购买 nike

我有一个包含 URL 的表格,其中一些超过 255 个字符。我想对 URL 列施加唯一性约束,但 MySQL 不允许我在 URL 上创建键。我正在使用 InnoDB/UTF8 表。据我了解,每个字符使用多个字节, key 限制为 766 个字节(在 InnoDB 中)。

根据 URL 保持行唯一性的优雅方法是什么?

最佳答案

对于 MySQL 5.7 或更新版本,请参阅 Andre Dalcher's answer以更好的方式使用生成的列。


你可以使用 SHA1 hash url 作为唯一键。有可能两个 url 具有相同的哈希值,但这种可能性小得离谱,因此出于实际目的,此方法应该可以正常工作。


您还可以设置一个触发器,以便在您插入时自动计算 hash 列:

CREATE TRIGGER mytrigger
BEFORE INSERT
ON foo
FOR EACH ROW SET
NEW.hash = SHA1(NEW.url)

关于mysql - 确保 MYSQL/InnoDB 中大于 255 的 varchar 的唯一性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8236376/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com