我已经使用标识列在Db2中创建了一个虚拟表。 DDL在以下共享:
CREATE TABLE new_employees (
sl_no int,
ident smallint generated always as identity
(start with 1,
increment by 1,
minvalue 1)
);
但是,当我插入数据时,不是以(对我而言)异常的方式插入标识列,而不是将1递增1。为什么会发生?
答案 0 :(得分:4)
原因是缓存序列/同一性值。我假设您已执行以下操作: -您的数据库尚未激活 -您已连接Db2并已断开连接进行测试
Db2每次首次使用时,都会为每个序列/标识填充值的高速缓存。从那里开始消耗值。每当Db2数据库关闭(最后一个连接终止或数据库被停用)时,缓存中的其余数字都会丢失。 默认缓存大小为20,请参见CREATE TABLE或CREATE SEQUENCE。没有NO CACHE选项。