我正在使用Oracle 11。
我必须执行一个触发器,从PARENT_ID的VALUE -column中获取值并将其放在同一个表中的CHILD_ID的VALUE列中。
LEVEL CHILD_ID PARENT_ID VALUE(of PARENT_ID) VALUE(of CHILD_ID)
10 07615461 09479551 111 'null' should have 111 from parent_id
20 07776685 07615461 111 'null' should have 111 from parent_id
20 08195786 07615461 111 'null' should have 111 from parent_id
因此,对触发器的查询必须按层次进行,但我不知道语法实际上是如何进行的。
我尝试过这样的事但没有成功
CREATE OR REPLACE TRIGGER value_check
BEFORE INSERT OR UPDATE ON table.a
FOR EACH ROW
BEGIN
IF :new.VALUE is NULL then
:new.VALUE := select b.VALUE,
connect_by_root(a.child_id)
from table a join table b
on a.child_id = b.child_id
connect by prior a.child_id = a.parent_id
start with a.level = 10;
END IF;
END;
非常感谢您的努力,帮助,提示,技巧,一切
也许我不够清楚,所以再试一次......
我需要一个触发器,它从层次结构中最高的ID(级别10)检查VALUE,并将此VALUE复制到它下面的每个其他ID。 例如,如果级别10中的ID 07615461具有VALUE 111,则应将此VALUE复制到07615461以下的每个其他ID。 例如,ID 07776685(在20级)和ID 08195786(在20级),每个应该具有与ID 07615461在10级中相同的VALUE 111。 这有意义吗? 我的矩阵可能不够好,这是另一种尝试:
目前:
LEVEL CHILD_ID PARENT_ID VALUE
10 07615461 09479551 111
20 07776685 07615461 null
20 08195786 07615461 null
触发后:
LEVEL CHILD_ID PARENT_ID VALUE
10 07615461 09479551 111
20 07776685 07615461 111
20 08195786 07615461 111