我有一個分層結構存儲在一個表中。每一個元素都有一個指針到其先前的,下一個和母使用觸發器確保數據一致性
create table CATALOGUE
(
NAME VARCHAR2(300) not null,
NEXT_ID NUMBER(38),
PARENT_ID NUMBER(38),
PREVIOUS_ID NUMBER(38),
XID NUMBER(38)
);
我有一個Java應用程序,其使用O/R映射來訪問和修改該表。有時我的目錄被損壞,例如它們是不具有相同父代的鏈接元素。我想知道是否可以使用Oracle觸發器或其他純SQL技術(無Java代碼)確保數據一致性。
這是做事「正確的方式」?
如何實現觸發器?我可以實現一個存儲過程來驗證我的表。像
select count(*)
from catalogue c1, catalogue c2
where c1.next_id = c2.previous_id and c1.parent_id != c2.parent_id
東西應該返回0
但我怎麼能調用它承諾?我不想在每次行更新時調用它,就在提交完成之前,如果我的表無效,可能會回滾。
「又聯繫不具有相同的父元素」怎麼可能觸發過確定什麼是「同一個父」可能是什麼意思? – 2010-06-30 15:23:47
@ S.Lott:我添加了一些信息,以便更清楚。 – 2010-06-30 15:30:37