我继承了一个SQL Server数据库,其中许多表的主键类型为numeric(18,0)
。
有什么原因(可能是历史原因)会导致某人选择这种数据类型作为主键呢?
我继承了一个SQL Server数据库,其中许多表的主键类型为numeric(18,0)
。
有什么原因(可能是历史原因)会导致某人选择这种数据类型作为主键呢?
我猜测这个SQL Server数据库最初是在SQL Server 2000之前的版本中设计的,而这是他们能够获得比标准int更大的“整数”的唯一方法。此后,bigint将更加适当。
对于键来说,没有正确或错误的类型。您应该选择准确表示业务领域或匹配输入数据的属性和类型。如果您记录的数据是数字类型,那么为什么不将其存储为数字呢?
最大精度可能是指整数。我通常用它作为主键,这些主键由数据库生成器生成的64位数字提供。
实际上我并不使用SQL-Server,但我的数据库中的整数是32位而不是64位。正如其他答案所建议的那样,它很可能起源于一个有此类限制的数据库。
int
呢? - JoelFan