我们在Db2数据库中使用序列。最近,我们已将数据从AIX服务器迁移到Linux服务器。在此期间,该序列的最新数量未移至Linux系统。因此,我们现在看到重复值。
以下是我们如何使用序列:
SELECT NEXTVAL FOR SEQ_YFS_ORDER_NO FROM SYSIBM.SYSDUMMY1
Linux上序列的当前值是100092142.如何将它更新为AIX系统上的当前值,即(100110960)?
答案 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”设置为所有序列,这样当您进行恢复时,它们将按照您想要的启动进行恢复。