选择主键数据类型为数字型(18,0)。

6

我继承了一个SQL Server数据库,其中许多表的主键类型为numeric(18,0)

有什么原因(可能是历史原因)会导致某人选择这种数据类型作为主键呢?

4个回答

6

我猜测这个SQL Server数据库最初是在SQL Server 2000之前的版本中设计的,而这是他们能够获得比标准int更大的“整数”的唯一方法。此后,bigint将更加适当。


1

对于键来说,没有正确或错误的类型。您应该选择准确表示业务领域或匹配输入数据的属性和类型。如果您记录的数据是数字类型,那么为什么不将其存储为数字呢?


1
主键不应该是业务数据! - JoelFan
1
也许你的前任更懂行。 - nvogel
http://rapidapplicationdevelopment.blogspot.com/2007/08/in-case-youre-new-to-series-ive.html - JoelFan

0

最大精度可能是指整数。我通常用它作为主键,这些主键由数据库生成器生成的64位数字提供。

实际上我并不使用SQL-Server,但我的数据库中的整数是32位而不是64位。正如其他答案所建议的那样,它很可能起源于一个有此类限制的数据库。


虽然它不是整数。但如果你想要整数,为什么不使用 int 呢? - JoelFan

0
如果您允许Hibernate生成模式,它将使用jtds将Long数据类型转换为numeric(19,0)。在您的情况下可能发生了类似的事情。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接