J'ai une structure hiérarchique stockée dans une table. Chaque élément a un pointeur vers le précédent, à côté et un parentUtilisation de déclencheurs pour assurer la cohérence des données
create table CATALOGUE
(
NAME VARCHAR2(300) not null,
NEXT_ID NUMBER(38),
PARENT_ID NUMBER(38),
PREVIOUS_ID NUMBER(38),
XID NUMBER(38)
);
j'ai une application Java, qui utilise le mappage O/R pour accéder et modifier ce tableau. Parfois, mon catalogue est corrompu, par ex. ce sont des éléments liés qui n'ont pas le même parent. Je me demande si je peux assurer la cohérence des données en utilisant des déclencheurs Oracle ou une autre technique SQL pure (sans code Java).
Est-ce "la bonne façon" de faire les choses?
Comment puis-je implémenter un trigger? Je peux implémenter une procédure stockée qui validerait ma table. Quelque chose comme
select count(*)
from catalogue c1, catalogue c2
where c1.next_id = c2.previous_id and c1.parent_id != c2.parent_id
doit retourner 0.
Mais comment puis-je l'appeler lors de la validation? Je ne veux pas l'appeler à chaque mise à jour de ligne, juste avant que la validation ne soit terminée avec une possibilité de restauration si ma table n'est pas valide.
"ce sont des éléments liés qui n'ont pas le même parent" Comment un déclencheur pourrait-il jamais déterminer ce que le "même parent" pourrait signifier? –
@ S.Lott: J'ai ajouté quelques informations pour être plus clair. –