Sql server 选择主键数据类型numeric(18,0)
我继承了一个SQL Server数据库,其中许多表的主键类型为Sql server 选择主键数据类型numeric(18,0),sql-server,primary-key,relational-database,Sql Server,Primary Key,Relational Database,我继承了一个SQL Server数据库,其中许多表的主键类型为numeric(18,0) 有人会选择此数据类型作为主键的原因(可能是历史原因?)是什么?可能是整数的最大精度。对于主键,我当然一直都在使用它,主键是由一个生成64位数字的数据库生成器提供的 我实际上并不使用SQL Server,但数据库中的整数是32位数字,而不是64位数字。正如在另一个答案中所建议的,它很可能起源于一个存在此类限制的数据库。我猜SQL Server数据库最初是在SQL Server 2000之前的版本中设计的,这是
numeric(18,0)
有人会选择此数据类型作为主键的原因(可能是历史原因?)是什么?可能是整数的最大精度。对于主键,我当然一直都在使用它,主键是由一个生成64位数字的数据库生成器提供的
我实际上并不使用SQL Server,但数据库中的整数是32位数字,而不是64位数字。正如在另一个答案中所建议的,它很可能起源于一个存在此类限制的数据库。我猜SQL Server数据库最初是在SQL Server 2000之前的版本中设计的,这是他们获得大于标准整数的“整数”的唯一方法。从那时起,bigint更合适。键的类型没有对错之分。您应该选择准确表示业务域或与输入数据匹配的属性和类型。如果您正在记录的数据是数字类型,那么为什么不将其存储为数字?如果您允许Hibernate生成模式,它将使用JTD将长数据类型转换为数字(19,0)。您的情况可能也发生了类似的情况。但它不是一个整数。如果您想要整数,为什么不使用
int
?主键不应该是业务数据!也许你的前任更清楚