[英]Database Trigger to verify if the node is leaf or not
我是數據庫新手,但有要求。 我有一個包含節點的表樹 。 表ConnectedNodes包含連接的節點
CREATE TABLE Tree ( nodeID NUMBER(16,0), parentID NUMBER(16,0))
CREATE TABLE ConnectedNodes (node1 NUMBER(16,0), node2 NUMBER(16,0))
只能連接葉節點。 因此,我需要在表ConnectedNodes上編寫一個插入/更新 觸發器 ,以檢查兩個節點是否均為葉節點
我正在使用Oracle 12c數據庫。
下面是觸發器的實現
CREATE TRIGGER TR_VerifyLeafNodes
BEFORE INSERT OR UPDATE ON ConnectedNodes
FOR EACH ROW
DECLARE
children NUMBER;
n1 NUMBER(16,0) := :NEW.node1;
n2 NUMBER(16,0) := :NEW.node2;
BEGIN
SELECT COUNT(*) INTO children
FROM Tree
WHERE parentID = n1 OR parentID = n2;
IF(children > 0)
THEN
RETURN;
ELSE
DBMS_OUTPUT.put_line('Trigger yet to be implemented');
END IF;
END
請讓我知道以上觸發器是否達到目的。
a)我假設如果您連接兩個節點,而當其中至少一個不是葉節點時,那么您想引發錯誤,而不僅僅是“返回”; 從觸發
b)為了使樹與定義保持一致,還必須實現一個觸發器,如果該節點的父節點“連接”到其他節點,則該觸發器將不允許您插入任何新節點。
出於好奇:您需要這種“樹”做什么?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.