OVH Cloud OVH Cloud

problème de récursivité

4 réponses
Avatar
BOUSSIER Nicolas
Bonjour,

Soit deux bases B1 et B2 identiques

Dans ces bases j'ai donc 2 tables T1 et T2 de même structure.

en résumé ces tables ont un champ index numérique et un champ Libellé.

Je dois synchroniser les enregistrements dans ces deux tables sachant que :

Lorsque j'insere un enregistrement d'index 1 dans T1 avec pour libellé
"TEST1"
Je voudrais qu'un enregistrement dans T2 soit automatiquement créé avec pour
libelle "_NE PAS UTILISER 1"

Cette partie fonctionne bien.

le problème se pose au niveau des suppressions.
Lorsque je supprime l'enregistrement dans T1, je dois verifier que le
libellé ne commence pas par "NE PAS UTILISER". Si c'est le cas, je dois
supprimer l'enregistrement et celui de même index dans T2 sinon je rejette
la demande.

Sachant que ces règles sont également valables pour T2, le trigger sur
suppression s'exécute sur T1 qui supprime l'enregistrement sur T2. A ce
moment le trigger sur suppression de T2 se déclenche et regarde si le
libellé ne commence pas par "NE PAS SUPPRIMER", ce qui est le cas. Il
rejette donc la suppression dans T2 et annule l'execution du trigger de T1.
Bref j'ai un message "suppression impossible".

Comment arreter la récursivité ou en d'autre termes, comment empècher que le
trigger de T1 ne déclenche le trigger de T2 et inversement.

J'espère avoir été clair.

merci et désolé de vous prendre la tête la veille du WE.

Niko

4 réponses

Avatar
Patrice
Si le problème est que le libellé "NE PAS SUPPRIMER" empêche la suppression,
T2 pourrais le changer préalable à la suppression dans T1 ?

Incidemment, il me semble qu' une "super table" pourrait être utile. J'ai
l'impression que tu veux une table de clés, chaque clé étant utilisée soit
dans T1 soit dans T2 ?

Patrice

--

"BOUSSIER Nicolas" ça-.fr> a écrit dans le message
de news:
Bonjour,

Soit deux bases B1 et B2 identiques

Dans ces bases j'ai donc 2 tables T1 et T2 de même structure.

en résumé ces tables ont un champ index numérique et un champ Libellé.

Je dois synchroniser les enregistrements dans ces deux tables sachant que


:

Lorsque j'insere un enregistrement d'index 1 dans T1 avec pour libellé
"TEST1"
Je voudrais qu'un enregistrement dans T2 soit automatiquement créé avec


pour
libelle "_NE PAS UTILISER 1"

Cette partie fonctionne bien.

le problème se pose au niveau des suppressions.
Lorsque je supprime l'enregistrement dans T1, je dois verifier que le
libellé ne commence pas par "NE PAS UTILISER". Si c'est le cas, je dois
supprimer l'enregistrement et celui de même index dans T2 sinon je rejette
la demande.

Sachant que ces règles sont également valables pour T2, le trigger sur
suppression s'exécute sur T1 qui supprime l'enregistrement sur T2. A ce
moment le trigger sur suppression de T2 se déclenche et regarde si le
libellé ne commence pas par "NE PAS SUPPRIMER", ce qui est le cas. Il
rejette donc la suppression dans T2 et annule l'execution du trigger de


T1.
Bref j'ai un message "suppression impossible".

Comment arreter la récursivité ou en d'autre termes, comment empècher que


le
trigger de T1 ne déclenche le trigger de T2 et inversement.

J'espère avoir été clair.

merci et désolé de vous prendre la tête la veille du WE.

Niko





Avatar
BOUSSIER Nicolas
"Patrice" a écrit dans le message de news:

Si le problème est que le libellé "NE PAS SUPPRIMER" empêche la


suppression,
T2 pourrais le changer préalable à la suppression dans T1 ?

Incidemment, il me semble qu' une "super table" pourrait être utile. J'ai
l'impression que tu veux une table de clés, chaque clé étant utilisée soit
dans T1 soit dans T2 ?

Patrice

--


Le problème n'est pas tout a fait là .

Effectivement il faut changer préalablement le libellé mais si je capte bien
ce qui ce passe

le trigger T1 tente de supprimer l'enregistrement de T2, ce qui déclenche le
trigger T2 qui tente de supprimer l'enregistrement de T1 et ainsi de suite

enfi je crois.

Niko
Avatar
Med Bouchenafa
Regarde l'option "nested triggers" dans l'Aide En Ligne

--
Bien cordialement
Med Bouchenafa

"BOUSSIER Nicolas" ça-.fr> a écrit dans le message
de news:
Bonjour,

Soit deux bases B1 et B2 identiques

Dans ces bases j'ai donc 2 tables T1 et T2 de même structure.

en résumé ces tables ont un champ index numérique et un champ Libellé.

Je dois synchroniser les enregistrements dans ces deux tables sachant que
:

Lorsque j'insere un enregistrement d'index 1 dans T1 avec pour libellé
"TEST1"
Je voudrais qu'un enregistrement dans T2 soit automatiquement créé avec
pour
libelle "_NE PAS UTILISER 1"

Cette partie fonctionne bien.

le problème se pose au niveau des suppressions.
Lorsque je supprime l'enregistrement dans T1, je dois verifier que le
libellé ne commence pas par "NE PAS UTILISER". Si c'est le cas, je dois
supprimer l'enregistrement et celui de même index dans T2 sinon je rejette
la demande.

Sachant que ces règles sont également valables pour T2, le trigger sur
suppression s'exécute sur T1 qui supprime l'enregistrement sur T2. A ce
moment le trigger sur suppression de T2 se déclenche et regarde si le
libellé ne commence pas par "NE PAS SUPPRIMER", ce qui est le cas. Il
rejette donc la suppression dans T2 et annule l'execution du trigger de
T1.
Bref j'ai un message "suppression impossible".

Comment arreter la récursivité ou en d'autre termes, comment empècher que
le
trigger de T1 ne déclenche le trigger de T2 et inversement.

J'espère avoir été clair.

merci et désolé de vous prendre la tête la veille du WE.

Niko





Avatar
Evariste
Dans l'enterprise manager, si tu fais bouton droit sur la base / Option, il
y a une option déclencheur récursif. Peut -être est-elle activée?


"BOUSSIER Nicolas" a écrit :

Bonjour,

Soit deux bases B1 et B2 identiques

Dans ces bases j'ai donc 2 tables T1 et T2 de même structure.

en résumé ces tables ont un champ index numérique et un champ Libellé.

Je dois synchroniser les enregistrements dans ces deux tables sachant que :

Lorsque j'insere un enregistrement d'index 1 dans T1 avec pour libellé
"TEST1"
Je voudrais qu'un enregistrement dans T2 soit automatiquement créé avec pour
libelle "_NE PAS UTILISER 1"

Cette partie fonctionne bien.

le problème se pose au niveau des suppressions.
Lorsque je supprime l'enregistrement dans T1, je dois verifier que le
libellé ne commence pas par "NE PAS UTILISER". Si c'est le cas, je dois
supprimer l'enregistrement et celui de même index dans T2 sinon je rejette
la demande.

Sachant que ces règles sont également valables pour T2, le trigger sur
suppression s'exécute sur T1 qui supprime l'enregistrement sur T2. A ce
moment le trigger sur suppression de T2 se déclenche et regarde si le
libellé ne commence pas par "NE PAS SUPPRIMER", ce qui est le cas. Il
rejette donc la suppression dans T2 et annule l'execution du trigger de T1.
Bref j'ai un message "suppression impossible".

Comment arreter la récursivité ou en d'autre termes, comment empècher que le
trigger de T1 ne déclenche le trigger de T2 et inversement.

J'espère avoir été clair.

merci et désolé de vous prendre la tête la veille du WE.

Niko