我有存储在表中的分层结构。 每一个元素都有一个指向其先前,未来和家长
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。
但是,我怎么能叫它承诺? 我不想把它在每行更新,只是之前提交完成的可能性,以回滚,如果我的表无效。