我确信这是一个我不知道名字的东西。
我想生成像:
这样的ID59AA307E-94C8-47D1-AA50-AAA7500F5B54
而不是标准的自动递增数字。
它不一定非常类似,但想要一个很长的唯一字符串值。
有一种简单的方法吗?
我想这样做是为了引用附件,因此它们不易使用,例如attachment = 1
我知道有很多方法,但我认为如果可能的话,基于字符串的id会更好,我确定我不是在寻找合适的东西。
谢谢
答案 0 :(得分:3)
上次检查时,您无法将UUID()指定为MySQL中列的默认约束。这意味着使用触发器:
CREATE TRIGGER
newid
BEFORE INSERT ON your_table_name
FOR EACH ROW
SET NEW.id = UUID()
我知道有很多方法,但我认为基于字符串的id会更好
我理解你是在默默无闻之后,但要注意大于4个字符的CHAR / VARCHAR列占用的空间比INT要多(1个字节)。这将影响检索和JOIN中的性能。
答案 1 :(得分:0)
每当需要将它发送到“public”时,您总是可以通过SHA1()或MD5()传递常规auto_increment值。在ID值之前/之后有一个像样的盐渍字符串,几乎不可能猜出原始数字是什么。你不会得到像UUID那样看起来像花哨的字符串,但你仍然有一个常规的整数ID值来处理内部。
如果您担心重复散列列所涉及的额外CPU时间,则可以在创建记录时始终将哈希值存储在单独的字段中。