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