4

作为我当前项目的一部分,URL 可能如下所示:

http://example.com/summary/ab123

最后一部分是通过base_convert(~,10,64)自定义字母表有效运行后的整数 ID。

然而,字母拼写事物。例如,当 ID 1,950,434 出现时,URL 将是:

http://example.com/summary/shit

是的。有什么方法可以“保留”形成不受欢迎的单词并让AUTO_INCREMENT字段跳过它们的 ID?

4

2 回答 2

3

虽然您可以通过创建一个触发器来检查自动生成的 ID,并且如果该 ID 包含在您的排除列表中,则可以在数据库中实现某些内容 - 删除该行并重试。

但是,这对我来说似乎有点 hacky ......并使数据库关心应该超出其范围的东西 - 转换为脏字的 ID。

相反,我会建议一个完全在数据库之外的解决方案。例如,您可以更改自定义字母表以排除所有元音吗?这样,无论生成的 ID 是什么,它都不会在您的 URL 中拼出任何令人讨厌的东西。

我能想到很多你不想在你的 URL 中出现的词。如果您尝试将不需要的单词列入黑名单,我会说一个更奇特的术语会漏掉的可能性很大......所以我认为不需要黑名单的方法也是出于这个原因的理想选择。

于 2013-03-19T15:42:55.507 回答
0

可能唯一的方法是确定最后一个 ID 是什么(使用 LAST_INSERT_ID)。然后确定下一个数字是否是不受欢迎的数字,插入垫片,然后立即删除该条目。

于 2013-03-19T15:40:00.737 回答