Sql DB2自动增量在重新启动后自行更改
每次我重新启动DB2服务时,auto increment字段总是自行更改, 例如:在我重新启动之前,自动增量值为13,并且递增1,在我重新启动之后,它总是变为31,并且总是递增20 你知道这是什么原因吗 每次重新启动Db2服务时,我都必须执行这个命令Sql DB2自动增量在重新启动后自行更改,sql,db2,Sql,Db2,每次我重新启动DB2服务时,auto increment字段总是自行更改, 例如:在我重新启动之前,自动增量值为13,并且递增1,在我重新启动之后,它总是变为31,并且总是递增20 你知道这是什么原因吗 每次重新启动Db2服务时,我都必须执行这个命令 ALTER TABLE <table> ALTER COLUMN <column> RESTART WITH 1 ALTER TABLE ALTER COLUMN用1重新启动 来自: “自动递增允许在将新记录插入表时生成唯
ALTER TABLE <table> ALTER COLUMN <column> RESTART WITH 1
ALTER TABLE ALTER COLUMN用1重新启动
来自:
“自动递增允许在将新记录插入表时生成唯一的编号。”
这是您可能期望的唯一结果:唯一(=不冲突)的数字。这些数据的生成方式由DBMS决定。您不能期望数字序列没有任何间隙
例如,出于性能原因,DBMS可能会选择“预分配”十个数字(23..32,33..42,…)的块,因此自动递增字段只能为每(最多)十条记录递增一次。如果您有一个INSERT
语句,在新创建的表中只插入5条记录,那么它可以“获取一个包含10个数字的块”(0..9),使用它的前五个值(0..4),并保留其余未使用的值。通过获取这一组数字,计数器从0增加到10。因此,下一个获取块的INSERT语句将获得10到19之间的数字。来源:
“自动递增允许在将新记录插入表时生成唯一的编号。”
这是您可能期望的唯一结果:唯一(=不冲突)的数字。这些数据的生成方式由DBMS决定。您不能期望数字序列没有任何间隙
例如,出于性能原因,DBMS可能会选择“预分配”十个数字(23..32,33..42,…)的块,因此自动递增字段只能为每(最多)十条记录递增一次。如果您有一个
INSERT
语句,在新创建的表中只插入5条记录,那么它可以“获取一个包含10个数字的块”(0..9),使用它的前五个值(0..4),并保留其余未使用的值。通过获取这一组数字,计数器从0增加到10。因此,下一个获取块的INSERT语句将获得10到19之间的数字。DB2有一个生成值的缓存,以减少生成值的开销(减少IO)。此缓存将存储在内存中,并根据请求分配值
创建/更改表时,请查看缓存选项。默认情况下,缓存值为20
理解sequeneces在DB2中的工作方式很重要。序列与生成的值/标识列共享许多概念
- 创建表
- 更改表格
- 序列
- 创建表
- 更改表格
- 序列