选择主键数据类型numeric(18,0)

时间:2011-06-03 16:28:04

标签: sql-server primary-key relational-database

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

有什么理由(历史可能会?)有人会为主键选择此数据类型吗?

4 个答案:

答案 0 :(得分:6)

我猜测SQL Server数据库最初是在SQL Server 2000之前的版本中设计的,这是他们获得比标准int更大的“整数”的唯一方法。从那以后,一个bigint会更合适。

答案 1 :(得分:1)

密钥没有正确或错误的类型。您应该选择准确表示业务域或匹配输入数据的属性和类型。如果您要录制的数据是数字类型,那么为什么不将它存储为数字?

答案 2 :(得分:0)

大概是整数的最大精度。我当然一直使用这个主键,它是由生成64位数字的数据库生成器提供的。

我实际上并不使用SQL-Server,但我的数据库中的整数是32位数,而不是64位。正如在另一个答案中所建议的那样,很可能是在数据库中开始出现这种限制。

答案 3 :(得分:0)

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