【发布时间】:2018-03-01 11:12:27
【问题描述】:
我有一个文章数据库,可能希望为每篇文章生成一个唯一的随机整数,以便可以通过https://blablabla.com/articles/8373734 等 URL 访问它们。
我可以在 python 后端实现,但是我们如何在 MySQL 语句中实现呢?
例如,一篇新文章完成,并插入到数据库中:
INSERT into article_table (title, date, url_id) VALUES ('asdf', '11/11/1111', 8373734)
这里的url_id是自动生成的唯一随机整数(1000~10000000)。
我相信主键 ID 和自动递增是解决这个问题的好方法。但我的问题是:
在实际场景中,他们(公司)是按字面意思使用主 ID 还是自动递增?这可能会暴露您(曾经)在数据库中拥有的数据。以https://www.zhihu.com/question/41490222 为例,我尝试了 41490222 周围的数百个数字,都返回 404 未找到。似乎记录的数量非常稀疏,不太可能通过自动增加来实现。
是否有任何有效的方法来生成这样的随机数而不检查每个循环的重复?
【问题讨论】:
-
只需使用自动递增的 id。
-
为什么必须是随机的?自增整数列保证唯一性。
-
可能是UUID_SHORT()可以用
-
因为我不希望整数是连续的
-
您真的需要您的 ID 为数字吗?它们可以是字符串吗?