作为我当前项目的一部分,URL 可能如下所示:
http://example.com/summary/ab123
最后一部分是通过base_convert(~,10,64)
自定义字母表有效运行后的整数 ID。
然而,字母拼写事物。例如,当 ID 1,950,434 出现时,URL 将是:
http://example.com/summary/shit
是的。有什么方法可以“保留”形成不受欢迎的单词并让AUTO_INCREMENT
字段跳过它们的 ID?
作为我当前项目的一部分,URL 可能如下所示:
http://example.com/summary/ab123
最后一部分是通过base_convert(~,10,64)
自定义字母表有效运行后的整数 ID。
然而,字母拼写事物。例如,当 ID 1,950,434 出现时,URL 将是:
http://example.com/summary/shit
是的。有什么方法可以“保留”形成不受欢迎的单词并让AUTO_INCREMENT
字段跳过它们的 ID?
虽然您可以通过创建一个触发器来检查自动生成的 ID,并且如果该 ID 包含在您的排除列表中,则可以在数据库中实现某些内容 - 删除该行并重试。
但是,这对我来说似乎有点 hacky ......并使数据库关心应该超出其范围的东西 - 转换为脏字的 ID。
相反,我会建议一个完全在数据库之外的解决方案。例如,您可以更改自定义字母表以排除所有元音吗?这样,无论生成的 ID 是什么,它都不会在您的 URL 中拼出任何令人讨厌的东西。
我能想到很多你不想在你的 URL 中出现的词。如果您尝试将不需要的单词列入黑名单,我会说一个更奇特的术语会漏掉的可能性很大......所以我认为不需要黑名单的方法也是出于这个原因的理想选择。
可能唯一的方法是确定最后一个 ID 是什么(使用 LAST_INSERT_ID)。然后确定下一个数字是否是不受欢迎的数字,插入垫片,然后立即删除该条目。