IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement SQL Server Discussion :

récupérer la ligne qui a déclenché un trigger


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Avatar de Peanut
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 421
    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)

  2. #2
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    INSERT INTO Table_Histo(LesColonnes)
    SELECT LesColonnes
    FROM DELETED

  3. #3
    Membre éclairé
    Avatar de Peanut
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 421
    Par défaut
    C'est parfait, merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment récupérer la ligne qui a causé une erreur ?
    Par schnee dans le forum Général JavaScript
    Réponses: 16
    Dernier message: 17/09/2014, 16h01
  2. Savoir qui a déclenché le trigger
    Par yodaime dans le forum PL/SQL
    Réponses: 10
    Dernier message: 16/06/2011, 16h25
  3. Récupération requête qui a déclenché le trigger
    Par jacky666 dans le forum PL/SQL
    Réponses: 3
    Dernier message: 06/03/2009, 17h20
  4. [RegEx] Récupérer la ligne qui contient un mot
    Par waldoun dans le forum Langage
    Réponses: 3
    Dernier message: 16/06/2008, 09h16
  5. Réponses: 9
    Dernier message: 16/10/2006, 13h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo