【发布时间】:2018-12-27 19:10:09
【问题描述】:
我创建了一个带有标识列的表。当我在该表中插入值时,标识列显示值之间存在巨大的增量差距。标识值从 6 跳转到 10001。这是按部门 id 排序的输出:
这是我创建的表格:
Create Table STG2.Department
(
DepartmentID int GENERATED ALWAYS AS IDENTITY (START WITH 1 INCREMENT BY 1 Cycle),
Name varchar(100),
GroupName varchar(100)
)
PRIMARY INDEX (DepartmentID);
这就是我将值插入Department 表的方式:
insert into STG2.Department (Name, GroupName)
Select Distinct
Department, GroupName
from DP_STG.HR;
我做错了什么?
【问题讨论】:
-
可能有一个进程定期刷新该部门表中的数据。但是不是使用 MERGE 或 UPDATE existing & INSERT new,而是通过 DELETE 和 INSERT 来简单吗?如果您有该部门表的外键,那么这将不是一个好方法。但它会解释这些差距。身份随着每次插入而增加。它不会在删除时自动减少。
-
我想知道在不设置 MAXVALUE 的情况下使用 CYCLE 时 MAXVALUE 会是多少。
-
@LukStorms:MaxValue 将基于数据类型的最大值,如果是 INT 2.147.483.647(与 MinValue 类似)
-
@dnoeth 感谢该信息。呵呵,看来那些被删除的DepartmentId要被回收了还需要一段时间。
标签: sql database teradata teradata-sql-assistant