DB2重置序列每天午夜

问题描述 投票:0回答:2

我需要在每个午夜自动重置DB2序列。我已经尝试使用示例1(https://www.ibm.com/support/knowledgecenter/en/SSEPGG_11.1.0/com.ibm.db2.luw.sql.rtn.doc/doc/r0054371.html)中的示例i来执行管理任务。即使已执行并显示在systools.admin_task_list中,它也没有重置序列。午夜。systools.admin_task_status中没有任何项目。如何获取与管理任务相关的错误?

是否有更简便的每天重置DB2序列的方法?

CALL SYSPROC.ADMIN_TASK_ADD
  ('Reset_sales1_seq',
    CURRENT_TIMESTAMP,
    NULL,
    NULL,
    '0 0 * * *',
    'SYSPROC',
    'ADMIN_CMD',
    'VALUES("ALTER SEQUENCE Sample.sales1_seq RESTART WITH 1")',
    NULL,
    NULL )
db2 sequence reset schedule
2个回答
2
投票

您正在使用存储过程ADMIN_CMD,该过程仅运行特定的commands选择,如documentation中所述。

知道普通SQL / DDL和命令之间的区别。

ADMIN_CMD不能直接像ALTER SEQUENCE一样运行纯SQL语句。

考虑编写一个简单的存储过程来执行ALTER SEQUENCE action in dynamic SQL, and then calling that procedure directly in the ADMIN_TASK_ADD`。


1
投票

尝试

CREATE PROCEDURE MYSCHEMA.RESET_SEQUENCE()
BEGIN
    EXECUTE IMMEDIATE('ALTER SEQUENCE SAMPLE.SALES1_SEQ RESTART WITH 1');
END

然后

CALL SYSPROC.ADMIN_TASK_ADD
('Reset_sales1_seq',
CURRENT_TIMESTAMP,
NULL,
NULL,
'0 0 * * *',
'MYSCHEMA',
'RESET_SEQUENCE',
NULL,
NULL,
NULL )
© www.soinside.com 2019 - 2024. All rights reserved.