Triggers DB2定时触发器

Triggers DB2定时触发器,triggers,db2,schedule,Triggers,Db2,Schedule,我不熟悉触发器,我想要求正确的过程来创建触发器(或任何更好的方法),以便在指定的日期时间将T4表的内容复制到T5表 例如,在每个月的第一天23:00,我想将T4表的内容复制到T5表。 谁能告诉我最好的方法是什么 多谢各位 CREATE TRIGGER TRIG1 AFTER INSERT ON T4 REFERENCING NEW AS NEW FOR EACH ROW BEGIN INSERT INTO T5 VALUES (:NEW.B, :NEW.A);

我不熟悉触发器,我想要求正确的过程来创建触发器(或任何更好的方法),以便在指定的日期时间将T4表的内容复制到T5表

例如,在每个月的第一天23:00,我想将T4表的内容复制到T5表。 谁能告诉我最好的方法是什么

多谢各位

CREATE TRIGGER TRIG1
   AFTER INSERT ON T4
   REFERENCING NEW AS NEW
   FOR EACH ROW
   BEGIN
     INSERT INTO T5 VALUES (:NEW.B, :NEW.A);
   END TRIG1;

它可以通过管理任务调度器特性而不是cron来完成。下面是一个示例脚本

#!/bin/sh

db2set DB2_ATS_ENABLE=YES
db2stop
db2start
db2 -v "drop db db1"
db2 -v "create db db1"
db2 -v "connect to db1"
db2 -v "CREATE TABLESPACE SYSTOOLSPACE IN IBMCATGROUP MANAGED BY AUTOMATIC STORAGE EXTENTSIZE 4"
db2 -v "create table s1.t4 (c1 int)"
db2 -v "create table s1.t5 (c1 int)"
db2 -v "insert into s1.t4 values (1)"
db2 -v "create procedure s1.copy_t4_t5() language SQL begin insert into s1.t5 select * from s1.t4; end"
db2 -v "CALL SYSPROC.ADMIN_TASK_ADD ('ATS1', CURRENT_TIMESTAMP, NULL, NULL, '0,10,20,30,40,50 * * * *', 'S1', 'COPY_T4_T5',NULL , NULL, NULL )"
date
它将创建一个名为“ATS1”的任务,并将每隔10分钟调用过程s1.copy_t4_t5,例如01:00、01:20、01:30。执行脚本后,您可能需要运行以下命令:
db2-v“连接到db1”
然后,在一段时间后,运行下面的命令,查看t5表是否有预期的行:
db2-v“从s1.t5中选择*”

对于您的情况,第5个参数将替换为'0 23 1**'。 它表示“分时-日/月-工作日”,所以 它将在每月的第一天23:00调用

有关如何修改现有任务、删除任务、查看状态的详细信息,请参见:
管理任务计划程序例程和视图

另外,这里有一篇关于它的好文章:
[DB2 LUW]示例管理任务调度器ADMIN\u task\u ADD和ADMIN\u task\u REMOVE用法


希望这有帮助。

触发器对表上的操作作出反应,而不是对时间作出反应。您可以使用cron或工作负载调度器来运行任务?(Z/OS、i系列、Linux/Unix/Windows)?(这将决定调度程序,可能还有SQL)。如果你只需要偶尔复制表格(例如每月或每周,或每天一次),考虑不同的方法。例如,如果您的Db2服务器在Linux/Unix/Windows上运行,您可以使用运行脚本的计划作业连接到数据库,使用CREATETABLE。。。喜欢有数据。其他方法也是可能的,包括用LOAD FROM CURSOR等填充目标表。谢谢。它在Redhat Enterprise 6上运行。你能给我一些关于如何创建cron可以使用的脚本的指导吗?