Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server > Développement
Développement Forum d'entraide sur le Transact-SQL, le CLR, les procédures stockées, les triggers, les requêtes SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 13/05/2011, 14h43   #1
Membre actif
 
Avatar de Peanut
 
Inscription : décembre 2003
Messages : 375
Détails du profil
Informations forums :
Inscription : décembre 2003
Messages : 375
Points : 192
Points : 192
Par défaut récupérer la ligne qui a déclenché un trigger

Salut,

je souhaite, à chaque fois qu'une colonne C qu'une table T est modifiée, copier la ligne concernée dans une autre table. (pour historisation)

Je pense donc faire un trigger qui se déclenchera à la modification d'une valeur de la colonne C : http://sqlserver.developpez.com/faq/?page=Prg#Prg3.

Mais comment savoir quelle ligne est concernée ? (dans l'exemple seul un message générique apparaît)
Peanut est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/05/2011, 14h53   #2
Membre Expert
 
Inscription : janvier 2010
Messages : 1 084
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : janvier 2010
Messages : 1 084
Points : 1 573
Points : 1 573
Bonjour,

a l'interieur d'un trigger, vous disposez de deux pseudo tables qui ont la meme structure que la table sur laquelle porte le trigger :

1 - INSERTED : contient les lignes inserées dans le cas d'un INSERT
2 - DELETED contient les lignes supprimées dans le cas d'un DELETE

Dans le cas d'un UPDATE :
DELETED contient les lignes avant que la commande UPDATE soit effectuée
INSERTED contient les lignes après que la commande UPDATE a été effectuée.

Dans votre cas, si c'est pour historiser, je suppose que ce sont les anciennes données qui vous intéressent, vous pouvez donc faire quelque chose comme :
Code SQL :
1
2
3
4
 
INSERT INTO Table_Histo(LesColonnes)
SELECT LesColonnes
FROM DELETED
aieeeuuuuu est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 17/05/2011, 12h01   #3
Membre actif
 
Avatar de Peanut
 
Inscription : décembre 2003
Messages : 375
Détails du profil
Informations forums :
Inscription : décembre 2003
Messages : 375
Points : 192
Points : 192
C'est parfait, merci.
Peanut est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h16.


 
 
 
 
Partenaires

Hébergement Web