|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Invité de passage
![]() Inscription : décembre 2007 Messages : 13 ![]() |
Bonjour,
Je souhaite créer un trigger pour recréer une ligne supprimée. Explication : Une application peut être amenée à supprimer des lignes dans une table A. Désormais, je dois garder une trace de cette suppression. Pour cela, j'ai créé un nouveau champ IS_DELETE dans ma table A. Il n'est pas possible de modifier l'application existante (remplacer l'ordre "DELETE FROM A WHERE ID = ...) par UPDATE A SET IS_DELETE = 'Y' WHERE ID = ...). Je pensais donc utiliser un trigger mais j'ai un problème de table mutante. J'ai même essayé d'utiliser une table temporaire et d'utiliser deux trigger mais cela ne fonctionne pas. Script 1er trigger : Code :
Script 2ème trigger : Code :
De plus, avec 2 triggers et une table temporaire, je n'y arrive même pas. Quelqu'un peut-il m'aider ? Merci |
||||
|
|
00
|
|
|
#2 |
|
Membre éprouvé
![]() Inscription : décembre 2007 Messages : 354 ![]() |
Indépendamment du problème de table mutante et étant donné que l'application ne peut pas être modifiée cette solution n'est pas acceptable! En fait, avez-vous pené aux interrogations sur cette table? Y a-t-il des aggrégats dans cette application sur cette table? Beaucoup de choses peuvent mal tourner dans cette application à cause de cette modification.
|
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : décembre 2007 Messages : 13 ![]() |
Oui, il peut y avoir des agregats mais sans incidence car les agrégations se font uniquement sur des enregistrements qui ne peuvent pas être supprimées (il y a un champ particulier dans cette table).
J'ai conscience qu'il peut y avoir des effets de bord non prévu et j'ai prévenu de les alerter sur ce point. (Je te rejoins) Mais je me demandais simplement si cela était déjà possible avec mes deux triggers (ou un seul). J'ai l'impression que c'est impossible (j'ai fait beaucoup de tests mais, à chaque fois, j'ai une erreur) Si c'est impossible, la question de la dangerosité ne se pose même plus. Merci |
|
|
00
|
|
|
#4 |
|
Membre éprouvé
![]() Inscription : juillet 2006 Messages : 445 ![]() |
Bonjour,
A ce moment là, pourquoi ne pas gérer la suppression logique non pas avec ce champ is_delete, mais en concervant les éléments supprimés dans une autre table ( --> votre table temporaire n'est plus temporaire, 1 seul trigger) ? |
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : décembre 2007 Messages : 13 ![]() |
En fait, l'idée c'est de pouvoir visualiser à partir d'une application les données même si la ligne a été supprimée.
En fait, il y a deux applications : - une qui peut être amener à supprimer un enregistrement - une qui visualise les enregistrements |
|
|
00
|
|
|
#6 | |||
|
Membre éprouvé
![]() Inscription : décembre 2007 Messages : 354 ![]() |
Citation:
Voici un exemple qui montre comment faire Code :
|
|||
|
|
00
|
|
|
#7 | |
|
Membre du Club
![]() Inscription : février 2007 Messages : 69 ![]() |
Citation:
|
|
|
|
00
|
|
|
#8 |
|
Invité de passage
![]() Inscription : décembre 2007 Messages : 13 ![]() |
Effectivement, cela fonctionne parfaitement.
J'étais sur une mauvaise piste en voulant utiliser un trigger sur ma table temporaire. Merci beaucoup pour la solution. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com