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 :

SQL SERVER Trigger de modification


Sujet :

Développement SQL Server

  1. #1
    Membre régulier Avatar de Sabact
    Inscrit en
    Septembre 2006
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 189
    Points : 91
    Points
    91
    Par défaut SQL SERVER Trigger de modification
    Bonjour, j'ai un trigger qui rempli une table TAB_LOG, lorsque l'utilisateur fait une modification sur une table UTILISATEUR.
    Le but c'est de récuperer les anciennes valeurs et les nouvelles valeurs de la table UTILISATEUR ainsi l'utilisateur qui a fait la modification.
    OLD_VALUE la valeur avant la modification
    NEW_VALUE la valeur modifiée
    Pour les autres colonnes le trigger semble bien fonctionnel mais lorsqu'on fait une modification sur une colonne CIV_CIVILITE qui est une colonne d'une autre table on a l'erreur

    Msg*208, Niveau*16, État*1, Procédure*TRG_UPDATE, Ligne*15
    Invalid object name 'updated'.


    code du 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
    15
    16
    17
    18
    19
    20
     
    CREATE TRIGGER [TRG_UPDATE] ON [UTILISATEUR]
    FOR UPDATE
    AS
    BEGIN
     
    	SET NOCOUNT ON
     
    	DECLARE @Matricule varchar(10),
    	@Nom varchar(100),	
    	@Prenom varchar(100)
     
     
    	-- Extrait code trigger
     
    	INSERT INTO TAB_LOG (CHAMP,TAB,OLD_VALUE,NEW_VALUE,DATE_MOD,USER_MOD,TYPE,ID_VALUE)
    	SELECT 'CIV_CIVILITE','UTILISATEUR', d.CIV_CIVILITE, i.CIV_CIVILITE, getdate(),d.USER_UPD, 'M',d.ID
    	FROM updated i, deleted d where d.CIV_CIVILITE<>i.CIV_CIVILITE
    	-- Extrait code trigger
     END
    CIV_CIVILITE est le clé secondaire de la table UTILISATEUR, provenant du table CIVILITE ci dessous

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     CREATE TABLE [dbo].[CIVILITE](
    	[CIV_CIVILITE] [DOM_CLASS] NOT NULL,
    	[CIV_LIBELLE] [DOM_LIBELLE] NULL,
     CONSTRAINT [PK_PA_CIVILITE_CIV] PRIMARY KEY NONCLUSTERED 
    (
    	[CIV_CIVILITE] ASC
    ) ON [PRIMARY]
    ) ON [PRIMARY]
    Merci pour votre aide
    Un sot ne dit pas de choses intelligentes, mais un homme intelligent dit beaucoup de bêtises.

  2. #2
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut
    Bonsoir,

    Ca ne serait pas plutôt INSERTED qu'il faudrait mettre à la place de UPDATED ?


    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
    CREATE TRIGGER [TRG_UPDATE] ON [UTILISATEUR]
    FOR UPDATE
    AS
    BEGIN
     
    	SET NOCOUNT ON
     
    	DECLARE @Matricule varchar(10),
    	@Nom varchar(100),	
    	@Prenom varchar(100)
     
     
    	-- Extrait code trigger
     
    	INSERT INTO TAB_LOG (CHAMP,TAB,OLD_VALUE,NEW_VALUE,DATE_MOD,USER_MOD,TYPE,ID_VALUE)
    	SELECT 'CIV_CIVILITE','UTILISATEUR', d.CIV_CIVILITE, i.CIV_CIVILITE, getdate(),d.USER_UPD, 'M',d.ID
    	FROM inserted i, deleted d WHERE d.CIV_CIVILITE<>i.CIV_CIVILITE
    	-- Extrait code trigger
     END
    ++

  3. #3
    Membre régulier Avatar de Sabact
    Inscrit en
    Septembre 2006
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 189
    Points : 91
    Points
    91
    Par défaut
    Citation Envoyé par mikedavem Voir le message
    Bonsoir,

    Ca ne serait pas plutôt INSERTED qu'il faudrait mettre à la place de UPDATED ?


    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
    CREATE TRIGGER [TRG_UPDATE] ON [UTILISATEUR]
    FOR UPDATE
    AS
    BEGIN
     
    	SET NOCOUNT ON
     
    	DECLARE @Matricule varchar(10),
    	@Nom varchar(100),	
    	@Prenom varchar(100)
     
     
    	-- Extrait code trigger
     
    	INSERT INTO TAB_LOG (CHAMP,TAB,OLD_VALUE,NEW_VALUE,DATE_MOD,USER_MOD,TYPE,ID_VALUE)
    	SELECT 'CIV_CIVILITE','UTILISATEUR', d.CIV_CIVILITE, i.CIV_CIVILITE, getdate(),d.USER_UPD, 'M',d.ID
    	FROM inserted i, deleted d WHERE d.CIV_CIVILITE<>i.CIV_CIVILITE
    	-- Extrait code trigger
     END
    ++
    Bonjour, Tu as raison
    Un sot ne dit pas de choses intelligentes, mais un homme intelligent dit beaucoup de bêtises.

  4. #4
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Points : 8 678
    Points
    8 678
    Par défaut
    Bonjour,

    ???

    « Je ne cherche pas à connaître les réponses, je cherche à comprendre les questions. »
    - Confucius -

    Les meilleurs cours, tutoriels et Docs sur les SGBD et le SQL
    Tous les cours Office
    Solutions d'Entreprise



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

Discussions similaires

  1. SQL SERVER : Triggers
    Par forsay1 dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 11/01/2007, 18h20
  2. Sybase -> SQL Server TRIGGER et ROLLBACK
    Par vincenteraptor dans le forum Développement
    Réponses: 2
    Dernier message: 03/07/2006, 13h16
  3. [SQL SERVER 2005 EXPRESS] Modification de trigger
    Par titoux_fr dans le forum Développement
    Réponses: 2
    Dernier message: 08/06/2006, 15h04
  4. SQL SERVER Trigger et executable
    Par elkamy dans le forum Développement
    Réponses: 1
    Dernier message: 10/12/2005, 14h02
  5. Insertion dans table SQL server (Trigger) Aidz moi SVP????
    Par pop bob dans le forum Développement
    Réponses: 2
    Dernier message: 31/07/2005, 00h55

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