Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 选择主键数据类型numeric(18,0)_Sql Server_Primary Key_Relational Database - Fatal编程技术网

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

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之前的版本中设计的,这是

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


有人会选择此数据类型作为主键的原因(可能是历史原因?)是什么?

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


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

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

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

如果您允许Hibernate生成模式,它将使用JTD将长数据类型转换为数字(19,0)。您的情况可能也发生了类似的情况。

但它不是一个整数。如果您想要整数,为什么不使用
int
?主键不应该是业务数据!也许你的前任更清楚