Afficher un message
Vieux 15/08/2007, 15h48   #4
Fred BROUARD
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Trigger Update : comment sélectionner l'enregistrement en cours

Marcel Wüthrich a écrit :
> Un grand merci Bruno pour ta réponse.
> Ca fonctionne parfaitement. Voilà le trigger :
>
> CREATE TRIGGER UpdateTable1 ON Table1
> FOR UPDATE
> AS
> DECLARE @ID AS INT
> SELECT @ID=ID from inserted
> INSERT INTO Table2
> SELECT * FROM Table1
> WHERE ID = @ID


Sauf que ceci est faux car ne traite qu'une seule ligne. Or votre
trigger peut voir passer des milliers de lignes à la fois. En effet le
trigger SQL Server est par nature ensembliste. En conclusion il ne faut
jamais avoir de variable locale dans le code d'un trigger sauf à piloter
un curseur.

Voici donc une récriture correcte de votre trigger :

CREATE TRIGGER UpdateTable1 ON Table1
FOR UPDATE
AS
INSERT INTO Table2
SELECT *
FROM Table1 T1
INNER JOIN inserted i
ON T1.ID = i.ID

A +

>
> ID représente le nom de la colonne qui contient la clé primaire.
> Marcel
>
> "bruno reiter" <delete-this.br33@terra.com.br> a écrit dans le message de
> news: OAyCrQo3HHA.1208@TK2MSFTNGP05.phx.gbl...
>> dasn un trigger tu as des "pseudo tables" accessibles dans le TRIGGER
>> contenant ce qui a été modifié :
>> pour INSERT, table inserted
>> pour DELETE, table deleted
>> pour UPDATE, table deleted (avant) et inserted (après)
>>
>> br
>>
>>
>> "Marcel Wüthrich" <marcel.wuthrich@cip-tramelan.ch> wrote in message
>> news:eBowCEo3HHA.1212@TK2MSFTNGP05.phx.gbl...
>>> Bonjour,
>>> J'ai un trigger FOR UPDATE sur une table (Table1). Ce trigger est le
>>> suivant :
>>>
>>> CREATE TRIGGER UpdateTable1 ON Table1
>>> FOR UPDATE
>>> AS
>>> INSERT INTO Table2
>>> SELECT * FROM Table1
>>>
>>> Comment faut-il faire pour insérer dans la Table2 uniqument
>>> l'enregistrement qui est modifié dans la Table1 ?
>>> Comment récupérer l'ID de l'enregistrement modifié (clé primaire) ?
>>>
>>> Merci d'avance pour votre réponse.
>>> Marcel
>>>

>
>



--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
  Réponse avec citation
 
Page generated in 0,06719 seconds with 9 queries