Trigger, ntext et update en masse
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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| CREATE TRIGGER [dbo].[REMARQUE_CHANTIER_UDP]
ON [dbo].[CHANTIER]
AFTER UPDATE
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for trigger here
IF ((SELECT TRIGGER_NESTLEVEL()) > 1 )
RETURN
IF UPDATE ([REMARQUE]) AND ((SELECT IDX_PROJET FROM [deleted]) IS NOT NULL) AND (SELECT IDX_PROJET FROM [deleted]) > 0
BEGIN
UPDATE CHANTIER SET REMARQUE = CH1.REMARQUE FROM inserted JOIN CHANTIER AS CH1 ON inserted.IDX_CHANTIER = CH1.IDX_CHANTIER WHERE CHANTIER.IDX_CHANTIER = CH1.IDX_PROJET
END
END
GO |
Je vous passe le détail de la table Chantier (bien trop long) disons qu'il y a l'id du chantier, la remarque et l'id du projet
EDIT: Soluce donnée par iberserk
Code:
1 2 3 4 5 6 7 8 9
| UPDATE C1
SET C1.REMARQUE = C2.REMARQUE
FROM CHANTIER C1
INNER JOIN
(SELECT CH1.IDX_PROJET, CH1.Remarque
FROM CHANTIER AS CH1
INNER JOIN inserted
ON inserted.IDX_CHANTIER = CH1.IDX_CHANTIER) C2
ON C1.IDX_PROJET=C2.IDX_PROJET |