4

私の現在のプロジェクトの一部として、URL は次のようになります。

http://example.com/summary/ab123

最後の部分はbase_convert(~,10,64)、カスタム アルファベットで効果的に実行された後の整数 ID です。

しかし、文字は物事を綴ります。たとえば、ID 1,950,434 が発生した場合、URL は次のようになります。

http://example.com/summary/shit

だから...ええ。望ましくない単語を形成する ID を「予約」して、AUTO_INCREMENTフィールドをスキップさせる方法はありますか?

4

2 に答える 2

3

自動生成されたIDをチェックするトリガーを作成することでデータベースに何かを実装できますが、そのIDが除外リストに含まれている場合は、行を削除して再試行してください。

しかし、これは私にはちょっとハッキーなようです...そしてデータベースはその範囲外にあるべきもの、つまり汚い言葉に翻訳されるIDを気にします。

代わりに、データベースの完全に外部にあるソリューションを提案します。たとえば、カスタムアルファベットを変更して、すべての母音を除外できますか?そうすれば、生成されたIDに関係なく、URLに不快なものが含まれることはありません。

URLに入れたくない単語がたくさん思い浮かびます。不要な単語をブラックリストに登録しようとすると、よりエキゾチックな用語がすり抜ける可能性がかなり高いと思います...したがって、ブラックリストを必要としないアプローチは、この理由からも理想的だと思います。

于 2013-03-19T15:42:55.507 に答える
0

おそらくこれを行う唯一の方法は、(LAST_INSERT_ID を使用して) 最後の ID を判別することです。次に、次の番号が望ましくない番号であるかどうかを判断し、shim を挿入してから、そのエントリをすぐに削除します。

于 2013-03-19T15:40:00.737 に答える