8

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

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

SELECT NEXTVAL FOR SEQ_YFS_ORDER_NO FROM SYSIBM.SYSDUMMY1

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

4

3 回答 3

15

您可以使用ALTER SEQUENCE修改序列。ALTER SEQUENCE 提供的一个选项是使用特定值重新启动它。尝试这样的事情:

ALTER SEQUENCE SEQ_YFS_ORDER_NO RESTART WITH 100110960

另请注意,通常会缓存序列号。这可能会导致差距,并可能导致迁移期间出现问题。

于 2018-01-31T06:34:48.990 回答
2

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

  SELECT NEXT VALUE FOR "Sequence_name"  FROM SYSIBM.SYSDUMMY1
于 2018-12-07T10:07:13.007 回答
0

解决问题

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 设置为“START WITH”到您的所有 SEQUENCES,因此当您进行恢复时,它们将以您想要的开始进行恢复。

于 2021-07-22T22:24:34.317 回答