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

MS SQL Server Discussion :

trigger sur 1 seule ligne


Sujet :

MS 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 trigger sur 1 seule ligne
    Bonjour, voici une question qui doit être simple.

    je voudrais assurer un suivi des mises à jour d'une table ligne par ligne.
    (ie : si un champ d'une ligne a été modifié, mettre à jour la colonne DATE_DERN_MAJ de cette ligne uniquement)

    J'ai fait un trigger :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    ALTER TRIGGER [dbo].[trg_audit_ma_table]
       ON  [dbo].[ma_table] 
       AFTER INSERT,UPDATE
    AS 
    BEGIN
    	SET NOCOUNT ON;
    	update [dbo].[ma_table] set DATE_DERN_MAJ=getdate();
     
    END
    mais ça me met à jour DATE_DERN_MAJ sur toutes les lignes.
    Comment faire pour le restreindre à la seule ligne modifiée ?

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 249
    Par défaut
    il faut utiliser la table INSERTED pour récupérer la clef primaire de la ligne insérer.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    ALTER TRIGGER [dbo].[trg_audit_ma_table]
       ON  [dbo].[ma_table] 
       AFTER INSERT
    AS 
    BEGIN
    	SET NOCOUNT ON;
    	UPDATE [dbo].[ma_table] SET DATE_DERN_MAJ=getdate() WHERE PRIMARY_KEY = INSERTED.PRIMARY_KEY;
     
    END

  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 quoi la table INSERTED ? Une table système ? Je ne la vois pas.
    (et puis la clé primaire de ma table est composée de plusieurs colonnes)

  4. #4
    Membre expérimenté
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2007
    Messages
    193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2007
    Messages : 193
    Par défaut
    la table inserted et deleted n'ont pas d'existence physique dans sql server.

    Ce sont des vues qui sont crées après une action de modification de donnée et accessible durant l'exécution des triggers sur cette actions.
    Elle contient l'image de la table sur laquel on travaille.

    On peut donc faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    update table set champs = getdate() from table inner join inserted on table.primkey1 = inserted.primkey1 ..... etc

  5. #5
    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
    Ca marche, merci à vous 2.

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

Discussions similaires

  1. [SQL-SERVER 2000] Problème de requête sur une seule ligne
    Par Sytchev3 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 05/04/2006, 16h54
  2. [CSS][firefox]positionner mes div sur une seule ligne
    Par hansaplast dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 29/03/2006, 14h44
  3. Plusieures infos sur une seule ligne avec ou sans tableau
    Par Him dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 17/03/2006, 14h16
  4. Synedit -commentaires sur une seule ligne
    Par Malone dans le forum Composants VCL
    Réponses: 2
    Dernier message: 03/02/2006, 19h44
  5. wxWidgets : couleur de texte sur une seule ligne
    Par Oatly dans le forum wxWidgets
    Réponses: 8
    Dernier message: 05/12/2004, 19h24

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