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 有没有办法通过加倍来自动增加sql server id?_Sql Server_Double_Auto Increment - Fatal编程技术网

Sql server 有没有办法通过加倍来自动增加sql server id?

Sql server 有没有办法通过加倍来自动增加sql server id?,sql-server,double,auto-increment,Sql Server,Double,Auto Increment,我是否可以在sql server中的id字段上设置一个自动增量,使每行的id增加一倍?否,您只能以算术方式(通过添加)递增,而不能以几何方式(通过相乘)递增。 这样的功能无论如何都不会有用。如果第一行的值为1,然后乘以2,则行值将为1、2、4、8,。。。第64排为18446744073709551616 最后一个值太大,无法放入bigint列,因此每个表最多只能存储63行 如果您需要的行数少于64行,那么关闭主键上的自动递增功能并使用设置的值并不太麻烦。否,您只能以算术方式递增(通过加法),而不

我是否可以在sql server中的id字段上设置一个自动增量,使每行的id增加一倍?

否,您只能以算术方式(通过添加)递增,而不能以几何方式(通过相乘)递增。
这样的功能无论如何都不会有用。如果第一行的值为1,然后乘以2,则行值将为1、2、4、8,。。。第64排为18446744073709551616

最后一个值太大,无法放入
bigint
列,因此每个表最多只能存储63行


如果您需要的行数少于64行,那么关闭主键上的自动递增功能并使用设置的值并不太麻烦。

否,您只能以算术方式递增(通过加法),而不能以几何方式递增(通过乘法)。
这样的功能无论如何都不会有用。如果第一行的值为1,然后乘以2,则行值将为1、2、4、8,。。。第64排为18446744073709551616

最后一个值太大,无法放入
bigint
列,因此每个表最多只能存储63行


如果您需要的行数少于64行,那么关闭主键上的自动递增功能并使用设置的值就不太麻烦了。

您的意思是每行的值都是前一行的两倍,如1、2、4、8、16……?这有什么意义?行的总数会有一个非常低的限制,这样就可以预先填充行了。你的意思是每一行都有前一行的两倍值,比如1,2,4,8,16…?这有什么意义?总行数会有一个非常低的限制,这样就可以预先填充行了。谢谢我们曾考虑将其用于一些二进制处理,但最终可能会将字段存储为十六进制字符串,因为大小限制SQL Server具有用于存储二进制数据的
binary
varbinary
列类型,您可以(也应该这样做)使用它们保存二进制处理的数据。使用1的增量,然后自己计算。也就是说,0=power(2,0),1=power(2,1),等等。但是正如斯维科指出的,您仍然被限制使用63个“位”,因为BigInt是有符号的,所以限制实际上是62行。添加到@Ben Thul的评论中。我已经看过两个专栏了。第一个col是增量为1的标识。插入所有行,然后对表中的第二列进行单独更新,使其具有相等的幂(cast(2为BigInt),IdentityColumn)。你需要确保它是一个BigInt。然后,在第二列上创建聚集索引。您不能将其设为主键,因为它最初将有多个空行。这个特性很少有用,但我看到的具体情况是合理的(执行一些位运算),这里有一个快速的证据证明它是62。试试这两种方法:选择力量(2为bigint),63)选择力量(2为bigint),62)哦。谢谢我们曾考虑将其用于一些二进制处理,但最终可能会将字段存储为十六进制字符串,因为大小限制SQL Server具有用于存储二进制数据的
binary
varbinary
列类型,您可以(也应该这样做)使用它们保存二进制处理的数据。使用1的增量,然后自己计算。也就是说,0=power(2,0),1=power(2,1),等等。但是正如斯维科指出的,您仍然被限制使用63个“位”,因为BigInt是有符号的,所以限制实际上是62行。添加到@Ben Thul的评论中。我已经看过两个专栏了。第一个col是增量为1的标识。插入所有行,然后对表中的第二列进行单独更新,使其具有相等的幂(cast(2为BigInt),IdentityColumn)。你需要确保它是一个BigInt。然后,在第二列上创建聚集索引。您不能将其设为主键,因为它最初将有多个空行。这个特性很少有用,但我看到的具体情况是合理的(执行一些位运算),这里有一个快速的证据证明它是62。尝试这两种方法:选择电源(强制转换(2为bigint),63)选择电源(强制转换(2为bigint),62)