问题 - 想要通过使用复合触发器来避免突变触发器的问题。但无法这样做
背景 - 每当主表“CUSTOM_ITEM”发生变化时,我想在新表“跟踪表”中插入数据
设计是这样的,每次在表中创建一行时,都会生成一个 ITEM_ID,但在某些情况下,有一列 FIRST_ITEM_ID 保持不变。
因此,每当添加新行时,我都想检查其 FIRST_ITEM_ID,然后检查整个表并找出具有相同 FIRST_ITEM_ID 的所有 ITEM_ID。
我想使用触发器在新表中插入所有这些行。
甚至可能吗?
连接触发器:
CREATE OR REPLACE TRIGGER APP.TEST_TRG
FOR DELETE OR INSERT OR UPDATE
ON APP.CUSTOM_ITEM
COMPOUND TRIGGER
TYPE t_change_tab IS TABLE OF APP.TEST_TRG.OBJECT_ID%TYPE;
g_change_tab t_change_tab := t_change_tab();
BEFORE EACH ROW IS
BEGIN
Select item_id bulk collect into g_change_tab from CUSTOM_ITEM where first_item_id =
(Select first_item_id from CUSTOM_ITEM where item_id = :NEW.item_id);
For i in 1 .. g_change_tab.COUNT()
LOOP
g_change_tab.extend;
END LOOP;
END BEFORE EACH ROW;
AFTER STATEMENT IS
BEGIN
For i in 1 .. g_change_tab.COUNT()
LOOP
app.bc_acs_pkg.populate_TEST_TRG /* Package Inserts data */
(p_object_type => 'ITEM',
p_object_id => g_change_tab(i));
END LOOP;
g_change_tab.delete;
END AFTER STATEMENT;
END ;
/