Db2:如何更新序列的当前值

Db2: How to update the current value of a sequence

我们使用 Db2 数据库中的序列。最近,我们将数据从 AIX 服务器迁移到 Linux 服务器。在此期间,该序列的最新编号未移至 Linux 系统。因此,我们现在看到重复值。

下面是我们如何使用序列:

SELECT NEXTVAL FOR SEQ_YFS_ORDER_NO FROM SYSIBM.SYSDUMMY1

Linux 上序列的当前值为 100092142。如何将其更新为我们在 AIX 系统上的当前值,即 (100110960)?

您可以使用 ALTER SEQUENCE. An option offered by ALTER SEQUENCE is to RESTART it with a specific value 修改序列。尝试这样的事情:

ALTER SEQUENCE SEQ_YFS_ORDER_NO RESTART WITH 100110960

另请注意,序列号通常会被缓存。这可能会导致间隙,并可能在迁移过程中导致问题。

使用以下查询从 DB2 数据库中获取下一个序列值。

  SELECT NEXT VALUE FOR "Sequence_name"  FROM SYSIBM.SYSDUMMY1

变通

ALTER SEQUENCE SEQ_YFS_ORDER_NO INCREMENT BY (100110960-100092142);
SELECT SEQ_YFS_ORDER_NO FROM dual;
ALTER SEQUENCE SEQ_YFS_ORDER_NO INCREMENT BY 1;

在备份您的数据库之前,您也可以创建一个存储过程来为所有序列设置 current_value“开始”,这样当您进行恢复时,它们将以您想要的开始恢复.