db2 - Db2 中身份列的奇怪行为?
问题描述
我使用标识列在 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 填充的标识列,而是以(对我而言)异常方式插入。为什么会这样?
解决方案
原因是序列/标识值的缓存。我假设您已完成以下操作: - 您的数据库尚未激活 - 您已与 Db2 连接并断开连接以进行测试
每当第一次使用每个序列/标识时,Db2 都会为每个序列/标识填充一个值缓存。从那里它消耗价值。每当 Db2 数据库关闭(最后一个连接终止或数据库停用)时,缓存中的剩余数字都会丢失。默认缓存大小为 20,请参阅CREATE TABLE或 CREATE SEQUENCE。有一个 NO CACHE 选项。
推荐阅读
- android - Android 应用程序在尝试从设备源获取图像时隐藏
- amazon-web-services - Kubectl with Gitlab EKS Cluster Error: You must be logged in to the server (Unauthorized)
- python - 从 tkinter OptionMenu 获取值
- perl - Perl 无法创建 cgi 会话
- wordpress - 使用 nginx-ingress 在 Kubernetes 上对 WordPress 服务进行服务器端 A/B 测试
- bitbucket - 如何更改 BitBucket 中的开发分支?
- azure-logic-apps - 如何在 Azure 逻辑应用中动态创建 JSON 对象?
- c# - 构建 Kafka 生产者会立即导致“请求 ApiVersion 时断开连接”错误
- r - 从 data.table 库中舍入/取整 ITime 格式时间的有效方法是什么
- python - 在 R Studio 中交互式运行 Python 脚本 - 如何安装包?