我已经创建了一个表,它自动递增以100开头的增量为100的id值,但是在1000之后插入下一个数据时它跳转到2000,它应该是1100.
这是语法:
create table student(
id int not null generated always as identity(start with 100, increment by 100),
name varchar(30),
primary key(id)
)
答案 0 :(得分:0)
我假设在您看到ID值为2000之前重新激活了数据库。出于性能原因,标识了列和序列的值。标识列的默认值为"cache 20"。
当缓存中填充了一大块新值时,下一个基本行将保留在DB2目录中。当数据库被取消激活(关闭,最后一次连接关闭)时,所有缓存也会被销毁。在需要下一个ID值时重新连接到数据库后,DB2首先查找现有缓存,然后从目录中检索最后一个基线。在你的情况下,这将是2000(20 * 100)。