我正在为历史函数编写数据库触发器。
我希望有机会为多个表使用一个触发器。此外,我不想按名称检查每一列。
所以我尝试使用这样的动态 SQL 创建触发器:
FOR columnItem IN (SELECT column_name
FROM all_tab_columns
WHERE TABLE_NAME = UPPER(tableName))
LOOP
-- how to use columnItem.column_name for the loop
-- like :new.[columnItem.column_name] or something like that
if :new.NAME != :old.NAME Then
INSERT INTO HISTORY
VALUES (HIS_SEQUENCE.nextval, tableName, :new.LOCAL_ID, columnItem.column_name, 'OLD', 'NEW', sysdate(), 'STACKOVERFLOW');
End If;
END LOOP;
这是不可能的,是吗?希望你知道一种方法来做到这一点。
提前致谢。