我专门考虑未签名 int.

这是一个实用的例子:当您的身份列最大化时,您会做什么?可以去 BigInt (8个字节存储而不是4)或重构应用程序以支持负整数,甚至可以创建自己的规则 这个答案;这些选项都不是最佳选择。

UInt 将是理想的解决方案,但是SQL Server不提供(MySQL在哪里)。

我知道未签名的数据类型不是SQL标准(SQL-2003)的一部分,但对我来说似乎仍然是浪费。

不包括这些的原因是什么(在SQL Server中或在标准中)?

有帮助吗?

解决方案

如果我不得不猜测,我会说他们试图避免类型的扩散。一般来说,没有任何签名整数无法做到的任何事情,签名的整数无法做到。至于您需要2147483648和4294967296之间的数字时,您可能应该转到8个字节整数,因为该数字最终也将超过4294967296。

其他提示

为此,您可以将-2,147,483,648用作种子价值。

Identity(-2147483648, 1)

我找到了一个类似的问题 在Microsoft Connect上。

吉姆·霍格(Jim Hogg)(计划经理)的答复有一些专业和骗局,用于添加Unsigned Int。主要骗局是实施隐式类型转换的规则成为正确的噩梦。

该请求已关闭,因为“不会修复”。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top