MySQL ベースのアプリケーションで MS SQL をサポートしようとしたところ、次の問題に遭遇しました。
負の値が存在しないことがわかっているため、全範囲を利用するために、MySQL の auto_increment を (さまざまなサイズの) 符号なし整数フィールドとして保持します。MS SQL は、すべての整数型で unsigned 属性をサポートしているわけではないため、値の範囲の半分を捨てるか、回避策を作成するかを選択する必要があります。
非常に単純なアプローチの 1 つは、データベースの抽象化コードまたはストアド プロシージャにコードを配置して、db 側の負の値と符号なし範囲のより大きな部分の値を変換することです。もちろん、これは並べ替えを混乱させます。また、auto-id 機能では機能しません (または何らかの方法で機能しますか?)。
今のところ良い回避策が思い浮かびませんが、何かありますか? それとも、私はただ狂信的で、範囲の約半分を忘れるべきですか?
編集:
@Mike Woodhouse:ええ、あなたは正しいと思います。頭の中で、フィールドの使用率を最適化すれば、フィールドのサイズを縮小できるのではないかという声がまだ残っています。しかし、これを行う簡単な方法がない場合は、おそらく心配する価値はありません。