每天午夜 DB2 重置序列
DB2 reset sequence midnight everyday
我需要在每个午夜自动重置 DB2 序列。我已经尝试使用我在示例 1 ( 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.how 中没有项目 我可以得到与管理任务相关的错误吗?
是否有更简单的方法每天重置 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
,它只运行特定选择的 命令,详见 documentation。
了解普通 SQL/DDL 和命令之间的区别。
ADMIN_CMD
不适用于 运行 普通 SQL 语句,直接像 ALTER SEQUENCE
.
考虑编写一个简单的存储过程以在动态 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 )
我需要在每个午夜自动重置 DB2 序列。我已经尝试使用我在示例 1 ( 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.how 中没有项目 我可以得到与管理任务相关的错误吗?
是否有更简单的方法每天重置 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
,它只运行特定选择的 命令,详见 documentation。
了解普通 SQL/DDL 和命令之间的区别。
ADMIN_CMD
不适用于 运行 普通 SQL 语句,直接像 ALTER SEQUENCE
.
考虑编写一个简单的存储过程以在动态 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 )