PHWinfo banniere

Titres
PORTAIL ANNUAIRE ARTICLES COMPARATEUR HÉBERGEURS DEVIS FORUMS RÉDUCTEUR D'URL
Précédent   PHWinfo > Forums Hébergement > Forum Hébergement serveur > ms.public.fr.sqlserver > Mise à jour avec un trigger
S'inscrire FAQ Membres Recherche Messages du jour Marquer les forums comme lus
Mise à jour avec un trigger

Réponse
 
LinkBack Outils de la discussion
Vieux 03/12/2007, 16h57   #1
Patrick
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Mise à jour avec un trigger

Bonjour,

J'aimerais mettre un trigger sur une table pour mettre à jour un champ après
un "INSERT". Pour le moment, je l'ai écrit comme cela :

CREATE TRIGGER [LW_TRANS_UPDATE_HZKEY] ON [dbo].[LW_TRANS]
AFTER INSERT
AS
BEGIN
SET NOCOUNT ON;

UPDATE LW_TRANS
SET HZKEY = (SELECT HZ_ACUDEF.HZKEY
FROM HZ_ACUDEF
WHERE HZ_ACUDEF.ACUKEY = LEFT(LW_TRANS.LAWSONKEY, 14))
WHERE LW_TRANS.HZKEY IS NULL
END

Comme on le voit, la mise à jour se fait avec la condition où le champ HZKEY
est NULL pour n'importe quel enregistrement de la table.
Est-il possible d'indiquer au trigger de mettre à jour seulement
l'enregistrement qui vient d'être ajouté ? Cela évitera le "WHERE" qui en
fait, à chaque fois, vérifie toute la table, ce qui est inutile puisque les
autres enregistrements sont déjà renseignés.

Merci.

--
Patrick
  Réponse avec citation
Vieux 03/12/2007, 18h45   #2
Rudi Bruchez
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Mise à jour avec un trigger

Bonjour,

Patrick a écrit:

> Est-il possible d'indiquer au trigger de mettre à jour seulement
> l'enregistrement qui vient d'être ajouté ? Cela évitera le "WHERE" qui en
> fait, à chaque fois, vérifie toute la table, ce qui est inutile puisque les
> autres enregistrements sont déjà renseignés.
>


En préambule, pour me faire plaisir (la plupart du temps, je me
retiens), dans un SGBDR comme SQL Server, il n'y a pas de champ, il n'y
a pas d'enregistrement. Ce sont des lignes et des colonnes.

Ça fait du bien

Ensuite : oui, bien sûr !
Il y a dans un trigger deux pseudo-tables, nommées inserted et deleted,
qui ont la même structure que la table sur lequel le trigger est posé,
et qui contiennent seulement les lignes affectées (soit ajoutées, soit
supprimées). Donc, pour ta question :

UPDATE lt
SET HZKEY = (SELECT HZ_ACUDEF.HZKEY
FROM HZ_ACUDEF
WHERE HZ_ACUDEF.ACUKEY = LEFT(LW_TRANS.LAWSONKEY, 14))
FROM LW_TRANS lt
JOIN inserted i ON lt.ta_clé_primaire = i.ta_clé_primaire


--
Rudi Bruchez
Consultant independant, MCDBA, MCITP, MCT
http://www.babaluga.com/
http://rudi.developpez.com/
  Réponse avec citation
Vieux 03/12/2007, 19h39   #3
Patrick
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Mise à jour avec un trigger

Merci beaucoup.

--
Patrick


"Rudi Bruchez" wrote:

> Bonjour,
>
> Patrick a écrit:
>
> > Est-il possible d'indiquer au trigger de mettre à jour seulement
> > l'enregistrement qui vient d'être ajouté ? Cela évitera le "WHERE" qui en
> > fait, à chaque fois, vérifie toute la table, ce qui est inutile puisque les
> > autres enregistrements sont déjà renseignés.
> >

>
> En préambule, pour me faire plaisir (la plupart du temps, je me
> retiens), dans un SGBDR comme SQL Server, il n'y a pas de champ, il n'y
> a pas d'enregistrement. Ce sont des lignes et des colonnes.
>
> Ça fait du bien
>
> Ensuite : oui, bien sûr !
> Il y a dans un trigger deux pseudo-tables, nommées inserted et deleted,
> qui ont la même structure que la table sur lequel le trigger est posé,
> et qui contiennent seulement les lignes affectées (soit ajoutées, soit
> supprimées). Donc, pour ta question :
>
> UPDATE lt
> SET HZKEY = (SELECT HZ_ACUDEF.HZKEY
> FROM HZ_ACUDEF
> WHERE HZ_ACUDEF.ACUKEY = LEFT(LW_TRANS.LAWSONKEY, 14))
> FROM LW_TRANS lt
> JOIN inserted i ON lt.ta_clé_primaire = i.ta_clé_primaire
>
>
> --
> Rudi Bruchez
> Consultant independant, MCDBA, MCITP, MCT
> http://www.babaluga.com/
> http://rudi.developpez.com/
>

  Réponse avec citation
Réponse


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui


Fuseau horaire GMT +1. Il est actuellement 05h40.


Édité par : vBulletin® version 3.7.3
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0 RC5 Tous droits réservés.
Version française #16 par l'association vBulletin francophone
PHWinfo est un site Éducation Sans Frontières ©2000-2008
Ad Management by RedTyger
©Tous droits réservés par les parties respectives
Page generated in 0,11456 seconds with 11 queries