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

时间:2018-01-31 06:12:57

标签: sql db2 sequences database-sequence

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

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

SELECT NEXTVAL FOR SEQ_YFS_ORDER_NO FROM SYSIBM.SYSDUMMY1

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

3 个答案:

答案 0 :(得分:7)

您可以使用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

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

答案 1 :(得分:0)

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

  SELECT NEXT VALUE FOR "Sequence_name"  FROM SYSIBM.SYSDUMMY1

答案 2 :(得分: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”设置为所有序列,这样当您进行恢复时,它们将按照您想要的启动进行恢复。