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 :

Trigger SQL Log Update d'une colonne


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2006
    Messages
    96
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 96
    Par défaut Trigger SQL Log Update d'une colonne
    Bonjour à toute et à tous,

    J'ai une application développée en ASP.NET qui permet à des utilisateurs de changer les caractéristiques des clients.

    Dans cette application, il est possible de changer l'adresse email des clients. Je souhaite avoir un système de log en cas d'update de la donnée.
    Je pensais utiliser un Trigger mais je ne sais vraiment pas comment récupérer les informations.

    En pseudo code ça donne sa:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if(AncienEmail != NouvelEmail)
    {
         insert into Log (idClient, AncienEmail, NewEmail) (X, "AncienEmail@Email.fr", "NouveauEmail@Email.fr");
    }
    Est-il judicieux de faire ça?
    Et comment puis-je le faire depuis la base de données?

    Merci de vos réponses,
    Lenny

  2. #2
    Membre éprouvé Avatar de pulsdrum
    Homme Profil pro
    MVP SQL Server - Consultant en Business Intelligence - MCITP, MCTS et MCSA SQL Server 2008/2012
    Inscrit en
    Juillet 2009
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : MVP SQL Server - Consultant en Business Intelligence - MCITP, MCTS et MCSA SQL Server 2008/2012
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 61
    Par défaut
    Bonjour,

    Voici comment créer ton Trigger :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    CREATE TRIGGER TRG_ClientMail ON DIM_CLIENT
    AFTER UPDATE 
    AS
    	DECLARE @OLDMAIL nvarchar(50);
    	DECLARE @NEWMAIL nvarchar(50);
     
    	SELECT @OLDMAIL = CLT_MAIL FROM deleted;
    	SELECT @NEWMAIL = CLT_MAIL FROM inserted;
     
    	IF(@OLDMAIL != @NEWMAIL)
    	BEGIN
    		INSERT INTO [LOG] (idClient, AncienEmail, NewEmail) 
    		SELECT PK_ID_CLIENT as idClient, @OLDMAIL as AncienEmail, @NEWMAIL as NewEmail FROM inserted;
    	END
    ++

  3. #3
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    Et si on avait fait ceci ?
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    CREATE TRIGGER TRG_ClientMail ON DIM_CLIENT AFTER UPDATE  AS
    BEGIN
            INSERT INTO [LOG] (idClient, AncienEmail, NewEmail)  	SELECT idClient, d.email, i.email
            FROM inserted i
                  INNER JOIN deleted d
                        ON  i.idClient = d.idClient
                        AND i.email <> d.email
    END

    Ce ne serait pas mieux ? Au risque de me tromper, il me semble que votre tigger n'est pas ensembliste et posera des problèmes si plus d'une ligne est mise à jour.

    Maintenant il est possible que je me sois aussi trompé dans le mien

  4. #4
    Membre éprouvé Avatar de pulsdrum
    Homme Profil pro
    MVP SQL Server - Consultant en Business Intelligence - MCITP, MCTS et MCSA SQL Server 2008/2012
    Inscrit en
    Juillet 2009
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : MVP SQL Server - Consultant en Business Intelligence - MCITP, MCTS et MCSA SQL Server 2008/2012
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 61
    Par défaut
    Effectivement c'est plus propre

  5. #5
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    Comme quoi, les choses finissent par rentrer

Discussions similaires

  1. Réponses: 5
    Dernier message: 15/06/2007, 16h05
  2. update d'une colonne entière sous bde
    Par gregcat dans le forum Bases de données
    Réponses: 1
    Dernier message: 23/03/2007, 21h46
  3. Réponses: 4
    Dernier message: 31/10/2006, 19h03
  4. [SQL Server 2000] ajouter une colonne identité dans une vue?
    Par CetTer dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 02/08/2005, 13h43
  5. update d'une colonne texte
    Par todd dans le forum Requêtes
    Réponses: 2
    Dernier message: 02/10/2003, 13h12

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