I need to create a SQL Trigger with Insert Statement selecting multiple columns from different tables . Something like this:
CREATE OR REPLACE TRIGGER ACTIV_TRG
AFTER INSERT ON TRANS_LOG
REFERENCING NEW AS TR
FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC
INSERT INTO ACTIVITIES values (
(SELECT MAX(SEQNBR) FROM ACTIV_LOG where TRAN_ID = 'XXX'),
TR.ACCOUNT,
TR.EVENT,
SELECT TRAN_ID ,
TRAN_DT ,
TRAN_LN FROM ACTIV_DEL where TRAN_ID = 'XXX',
CURRENT TIMESTAMP
)
END;
The issue is when I tried to select more than one column in the sub query. I know if I separate the Sub Query like this :
(TRAN_ID FROM ACTIV_DEL where TRAN_ID = 'XXX'),
(TRAN_DT FROM ACTIV_DEL where TRAN_ID = 'XXX'),
(TRAN_LN FROM ACTIV_DEL where TRAN_ID = 'XXX'),
will work but definitely there must be a better and efficient way to do this.
Thanks in advance.
Definitely, there must be a better solution than this:
CREATE OR REPLACE TRIGGER ACTIV_TRG
AFTER INSERT ON TRANS_LOG
REFERENCING NEW AS TR
FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC
INSERT INTO ACTIVITIES values (
(SELECT MAX(SEQNBR) FROM ACTIV_LOG where TRAN_ID = 'XXX'),
TR.ACCOUNT, ---> FIELD FROM TRANS_LOG (TRIGGER SOURCE)
TR.EVENT, ---> FIELD FROM TRANS_LOG (TRIGGER SOURCE)
SELECT TRAN_ID FROM ACTIV_DEL where TRAN_ID = 'XXX', ---> REPETING SELECT
SELETC TRAN_DT FROM ACTIV_DEL where TRAN_ID = 'XXX', ---> REPETING SELECT
SELECT TRAN_LN FROM ACTIV_DEL where TRAN_ID = 'XXX', ---> REPETING SELECT
CURRENT TIMESTAMP
)
END;