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“开始”,这样当您进行恢复时,它们将以您想要的开始恢复.
我们使用 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“开始”,这样当您进行恢复时,它们将以您想要的开始恢复.