|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Membre du Club
![]() Inscription : octobre 2009 Messages : 59 ![]() |
Bonjour
On me demande de faire un trigger qui met à jour un champ Remarque d'une table Chantier pour tout les chantier d'un même projet lorsque que l'on modifie le champ Remarque de la table Chantier J'ai d'abord pensé à récupérer le champ Remarque dans mon trigger pas de bol c'est ntext, donc niet ensuite j'ai pensé à faire mon update et le select de remarque dans la même formule, même problème de ntext, j'ai vu qu'on pouvait tricher en passant par la table juste mis à jour pour récupérer le champ Remarque, plus de problème pour récupérer le champ mais impossible de savoir où placer la clause Where pour limiter l'Update au chantier du même Projet (message classique d'identificateur ne pouvant être lié sur CHANTIER.IDX_CHANTIER) Une idée pour résoudre mon problème ? Voila le code mon trigger Code :
EDIT: Soluce donnée par iberserk Code :
|
||||
|
|
00
|
|
|
#2 | ||
|
Membre Expert
![]() |
A la base je pense qu'il y a un problème de modélisation, si j'ai bien compris tous les chantiers d'un projet ont la même valeur dans la colonne remarque?
Il faut déporter cette information sur une colonne de la table projet(remarque_chantiers par exemple). Sinon cette syntaxe devrait fonctionner dans votre TRIGGER: Code :
|
||
|
|
00
|
|
|
#3 |
|
Membre du Club
![]() Inscription : octobre 2009 Messages : 59 ![]() |
Pas tout à fait, dans notre cas on détourne une application déjà existante PlanningPME pour ceux que ça intéresse, les chantier n'ont pas forcement les mêmes remarques, on veut que ça soit le cas pour les chantiers d'un même projet. Sinon oui j'aurais effectivement fait remonter la remarque sur le projet
Pour la requête ça ne résous pas mon problème, elle ne fait que mettre à jour le champs à une valeur dont elle viens d'être mis à jour sur un seul chantier, de plus elle ne fonctionneras pas puisque SQLserver interdit l'utilisation des champs de type ntext, text et image dans le cas des pseudo table inserted et deleted (sauf pour un instead of trigger, que je ne peux pas utiliser ici) |
|
|
00
|
|
|
#4 | ||
|
Membre Expert
![]() |
Autant pour moi...
Code :
Avec IDX_PROJET votre FK vers PROJET sur CHANTIER |
||
|
|
00
|
|
|
#5 |
|
Membre du Club
![]() Inscription : octobre 2009 Messages : 59 ![]() |
Presque au delà d'une petite faute:
SELECT DISTINCT IDX_PROJET, pas de distinct et C1.IDX_PROJET mais surtout le Inner inner join ce fait sur IDX_CHANTIER Bon ça à l'air de marcher comme ça, je fais quelques tests quand même |
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() |
je pense que pour le coups, le inner join sur idprojet fonctionne quand même puisque c une FK de CHANTIER d'où mon distinct...
Mais votre code devrait fonctionner quand même |
|
|
00
|
|
|
#7 |
|
Membre du Club
![]() Inscription : octobre 2009 Messages : 59 ![]() |
Ah non puisque que la relation de chantier vers projet est n-1, donc il y aurait eu plusieurs chantiers avec ce join
Enfin bon ça marche merci pour le coup de main |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com