符号なしint
について具体的に考えています。
実用的な例は次のとおりです。ID列が限界に達したらどうしますか? BigInt
(4ではなく8バイトのストレージ)に移動するか、アプリケーションをリファクタリングして負の整数をサポートし、 this answer ;に示されている独自のルールを作成することもできます。これらのオプションはどちらも最適ではありません。
UInt
は理想的なソリューションですが、SQL Serverはそれを提供しません(MySQLが提供する場合)。
署名されていないデータ型はSQL標準(SQL-2003)の一部ではないことを理解していますが、それでも私にとっては無駄に思えます。
これらを(SQL Serverまたは標準に)含めない理由は何ですか?
推測しなければならないのであれば、タイプの急増を避けようとしていると言えます。一般的に言えば、符号なし整数ではできないこと、符号付き整数ではできないことは何もありません。 2147483648から4294967296の間の数値が必要な場合は、おそらく8バイトの整数にする必要があります。これは、数値が最終的に4294967296を超えるためです。
そのためには、-2,147,483,648をシード値として使用できます。
Identity(-2147483648, 1)
同様の質問を見つけました Microsoft Connectで
Jim Hogg(プログラムマネージャー)からの返信には、符号なしintを追加するための長所と短所があります。主な短所は、暗黙の型変換を実装するルールを正しく行うのが悪夢になることです。
リクエストは「修正しない」としてクローズされました。