DB2每天午夜重置序列



我需要在每个午夜自动重置DB2序列https://www.ibm.com/support/knowledgecenter/en/SSEPGG_11.1.0/com.ibm.db2.luw.sql.rtn.doc/doc/r0054371.html(。即使这样也被执行并显示在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 )

您使用的存储过程ADMIN_CMD只运行特定的命令选择,如文档中所述。

了解普通SQL/DDL和命令之间的区别。

ADMIN_CMD不适用于像ALTER SEQUENCE那样直接运行纯SQL语句。

考虑编写一个简单的存储过程来执行动态SQL中的ALTER SEQUENCE操作,然后在ADMIN_TASK_ADD中直接调用该过程。

尝试

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 )

最新更新