我有这种形式的触发器:
CREATE TRIGGER TBP701_UPDATE AFTER UPDATE ON TBP701 REFERENCING OLD AS OLD_ROW NEW AS NEW_ROW FOR EACH ROW MODE DB2SQL INSERT INTO TBP702 ( ID , IRN , EVENT , OLDVALUES , NEWVALUES , USER , ENTRYTIME ) VALUES ( DEFAULT , NEW_ROW . COLUMN1 , 'BUYBACK_ADD' , '{"column1":"' CONCAT OLD_ROW . COLUMN1 CONCAT '","column2":"' CONCAT OLD_ROW . COLUMN2 CONCAT '","column3":"' CONCAT OLD_ROW . COLUMN3 CONCAT '"}' , '{"column1":"' CONCAT NEW_ROW . COLUMN1 CONCAT '","column2":"' CONCAT NEW_ROW . COLUMN2 CONCAT '","column3":"' CONCAT NEW_ROW . COLUMN3 CONCAT '"}' , USER , CURRENT_TIMESTAMP ) ;
我需要将tbp701中的旧值和新值以json格式插入到新表中。 在上面的查询中,我对JSON字符串进行了硬编码。 但我需要在100多个表上编写此类触发器。 所以我需要一个可以接受以下两个参数的sql函数
- 来自触发器的NEW_ROW / OLD_ROW参考和
- 表名
它应该向我返回JSON字符串,其中包含触发了触发器的特定表和行的所有列。 然后,我可以为所有触发器重用该功能。
我是db2概念中这种高级功能的新手。 因此,描述性的答案将受到高度赞赏。
谢谢。