Запланированный триггер DB2 - PullRequest
0 голосов
/ 08 января 2020

Я новичок в триггерах, и я хочу попросить правильную процедуру создания триггера (или любых других лучших методов) для дублирования содержимого таблицы T4 в таблицу T5 в указанное время.

Например, 1-го числа каждого месяца в 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;

1 Ответ

0 голосов
/ 09 января 2020

Это можно сделать с помощью функции административного планировщика задач вместо 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 и будет вызывать процедуру s1.copy_t4_t5 каждые 10 минут, например, 01:00, 01:20, 01:30. , Вам может потребоваться запустить ниже после выполнения сценария:
db2 -v "connect to db1"
Затем, через некоторое время, запустите ниже, чтобы увидеть, есть ли в таблице t5 строка, как и ожидалось:
db2 -v "select * from s1.t5"

В вашем случае 5-й параметр будет заменен на '0 23 1 * *' . Он представляет «минутный час day_of_month month weekday», поэтому он будет вызываться каждый 1-й день месяца в 23:00.

Для получения дополнительной информации о том, как изменить существующую задачу, удалить задачу, просмотреть статус, см. По адресу:
Подпрограммы и представления планировщика административных задач
https://www.ibm.com/support/knowledgecenter/en/SSEPGG_11.1.0/com.ibm.db2.luw.sql.rtn.doc/doc/c0061223.html

Также вот одна из хороших статей об этом:
[DB2 LUW] Пример использования планировщика административных задач ADMIN_TASK_ADD и ADMIN_TASK_REMOVE
https://www.ibm.com/support/pages/node/1140388?lang=en

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...