我特别考虑的是未签名的int
。
这里有一个实际的例子:当你的身份列达到最大值时,你该怎么做?可以使用BigInt
(8字节存储而不是4字节),也可以重构应用程序以支持负整数,甚至可以按照this answer中的说明创建自己的规则;这两种选择都不是最优的。
UInt
将是一个理想的解决方案,但是SQL Server不提供它(而MySQL提供)。
我知道无符号数据类型不是SQL标准(SQL-2003)的一部分,但在我看来仍然是一种浪费。
不包括这些(在SQL Server或标准中)的原因是什么?
发布于 2010-12-16 00:08:33
如果要我猜的话,我会说他们是在努力避免类型的激增。一般来说,无符号整数可以做的任何事情都是有符号整数做不到的。至于当你需要一个介于2147483648和4294967296之间的数字时,你可能应该使用一个8字节的整数,因为这个数字最终也会超过4294967296。
发布于 2012-01-09 23:05:11
为此,您可以使用-2,147,483,648作为种子值。
Identity(-2147483648, 1)
发布于 2013-08-08 15:25:17
我发现了一个类似的问题on Microsoft Office Dev Center.
Jim Hogg (程序经理)的回复对于添加无符号整数有一些优点和缺点,主要缺点是实现隐式类型转换的规则成为正确的噩梦。
该请求被关闭为"Won't Fix“。
https://stackoverflow.com/questions/4451967
复制相似问题