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 :

Utilisateur qui insère une ligne


Sujet :

MS SQL Server

  1. #1
    Membre éclairé Avatar de Monstros Velu
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2003
    Messages
    619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 619
    Par défaut Utilisateur qui insère une ligne
    Bonjour,

    J'ai deux tables :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    Create table [TBL_PERSONNE]
    (
    	[PK_PERSONNE] Integer NOT NULL, UNIQUE ([PK_PERSONNE]),
    	[VCH_NOM] Varchar(96) NOT NULL,
    	[VCH_PRENOM] Varchar(64) NULL,
    	/* ... */
    	[USR_CREATE] Integer NOT NULL,
    	[USR_UPDATE] Integer NULL,
    	[USR_DELETE] Integer NULL,
    	[DTE_CREATE] Char(8) NOT NULL,
    	[DTE_UPDATE] Char(8) NULL,
    	[DTE_DELETE] Char(8) NULL
    ) 
    go
     
    Create table [TBL_UTILISATEUR]
    (
    	[PK_UTILISATEUR] Integer NOT NULL, UNIQUE ([PK_UTILISATEUR]),
    	[FK_TYPUTIL] Integer NOT NULL,
    	[FK_PERSONNE] Integer NOT NULL, UNIQUE ([FK_PERSONNE]),
    	[VCH_LOGIN] Varchar(20) NOT NULL, UNIQUE ([VCH_LOGIN]),
    	[VCH_MDP] Varchar(50) NOT NULL, UNIQUE ([VCH_MDP]),
    	/* ... */
    ) 
    go
    Je voudrai, dans mon trigger d'insertion sur TBL_PERSONNE, mettre à jour la date et l'utilisateur qui ont effectué la modification.

    Je n'ai pas eu de problèmes pour la date :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    create trigger TRG_PERSONNE_INS on TBL_PERSONNE for insert as
    begin
    	/* création à la date du jour */
    	UPDATE TBL_PERSONNE
    	set TBL_PERSONNE.DTE_CREATE = (select convert(char(8), getdate(), 112))
    	where TBL_PERSONNE.PK_PERSONNE in (select INSERTED.PK_PERSONNE from INSERTED)
    end
    Par contre, je ne sais pas comment récupérer l'utilisateur qui est connecté (sachant que l'utilisateur connecté à la base utilise le même login que celui dans l'application : VCH_LOGIN, ce qui me permettra de retrouver le PK_UTILISATEUR dont j'ai besoin). Bref, voilà une question tout simple à laquelle je n'ai pas la réponse :
    Comment savoir quel est l'utilisateur qui effectue une operation ?

    Merci d'avance pour l'aide :o)

  2. #2
    Rédacteur/Modérateur

    Avatar de Fabien Celaia
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2002
    Messages
    4 228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 228
    Billets dans le blog
    25
    Par défaut
    Qqch du genre.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    create trigger TRG_PERSONNE_INS on TBL_PERSONNE for insert as
    begin
       /* création à la date du jour */
       UPDATE TBL_PERSONNE
       set TBL_PERSONNE.DTE_CREATE = convert(char(8), getdate(), 112),
            TBL_PERSONNE.VCH_NOM = suser_sname()
       FROM INSERTED
       where TBL_PERSONNE.PK_PERSONNE = INSERTED.PK_PERSONNE 
    end
    A vous de fignoler pour vos noms et prénoms...
    Sr DBA Oracle / MS-SQL / MySQL / Postgresql / SAP-Sybase / Informix / DB2

    N'oublie pas de consulter mes articles, mon blog, les cours et les FAQ SGBD

    Attention : pas de réponse technique par MP : pensez aux autres, passez par les forums !

  3. #3
    Membre éclairé Avatar de Monstros Velu
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2003
    Messages
    619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 619
    Par défaut
    pile la fonction qu'il me fallait, merci ! :o)

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

Discussions similaires

  1. Requête qui affiche une ligne de résultat en moins
    Par keusty78 dans le forum Langage
    Réponses: 4
    Dernier message: 19/05/2014, 17h56
  2. Réponses: 6
    Dernier message: 12/05/2008, 11h22
  3. case à cocher qui colore une ligne d'un tableau
    Par gastoncs dans le forum IHM
    Réponses: 2
    Dernier message: 14/02/2008, 05h40
  4. Voir l'utilisateur qui touche à une table ?
    Par mat_lefebvre dans le forum Access
    Réponses: 11
    Dernier message: 14/03/2006, 09h02

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