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 avec Insertion à partir d'une autre table


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 1
    Par défaut Trigger avec Insertion à partir d'une autre table
    Bonjour,

    Je suis actuellement en train d'essayer de développer une application pour mon école.
    J'aimerai créer un trigger qui après chaque update ou insert dans une table, injecte des données dans une autre table.

    Voici les tables utilisées :

    LigneCommande :
    1 - PKLigneCommande
    2 - FKStatut

    HistoriqueStatut
    1 - FKLigneCommande (Foreign Key de PKLigneCommande)
    2 - FKStatut
    3 - DateChangementStatut

    Objectif: Lorsque je créé une ligne de commande, je renseigne une PKLigneCommande et un FKStatut.
    Cette action renseigne une ligne dans HistoriqueStatut avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    HistoriqueStatut.FKLigneCommande = LigneCommande .PKLigneCommande
    HistoriqueStatut.FKStatut = LigneCommande.FKStatut
    getdate()
    A chaque changement de FKStatut dans LigneCommande, une nouvelle ligne se créé dans HistoStatut avec les 3 informations ci dessus.

    Or je n'arrive pas à développer mon trigger.
    Voici pour le moment mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    -------------------------------------------------------
    CREATE TRIGGER TEST
       ON  [dbo].[LigneCommande]
       AFTER INSERT, UPDATE
    AS 
    BEGIN
    INSERT INTO HistoStatut (FKLigneCommande , FKStatut , DateChangementStatut)
    SELECT LC.PKLigneCommande , LC.FKStatut , getdate()
    FROM LigneCommande LC
    END
    -----------------------------------------------
    Comme vous pouvez le deviner, ceci me créé à chaque fois un tas de ligne égale au nombre de ligne dans la table LigneCommande or ce n'est pas ce que je veux.

    EXEMPLE :
    Table LigneCommande :
    1 , 1

    Table HistoStatut
    1 , 1 , dateA

    Je change le statut de LigneCommande de 1 je le passe à 2 :
    1 , 2
    Table HistoStatut deviendrai :
    1 , 1 , dateA
    1 , 2 , dateB

    Merci par avance de votre aide.

    Configuration :
    SQLServer 2005
    Management Studio

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 001
    Billets dans le blog
    6
    Par défaut
    Vous devez faire une jointuer avec la table INSERTED qui contient une image des nouvelles données afin de limiter les lignes à manipuler aux seules lignes nouvelles.

    Lisez mon cours à ce sujet : http://sqlpro.developpez.com/cours/s...actsql/#L5.3.1

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

Discussions similaires

  1. Réponses: 2
    Dernier message: 29/10/2008, 15h31
  2. requete insert a partir d'une autre table
    Par c+cool dans le forum Langage SQL
    Réponses: 1
    Dernier message: 04/07/2008, 09h46
  3. Réponses: 1
    Dernier message: 23/01/2007, 15h57
  4. Réponses: 4
    Dernier message: 03/06/2006, 12h45
  5. pb d'insertion avec un SELECT sur une autre table
    Par epeichette dans le forum Requêtes
    Réponses: 3
    Dernier message: 03/01/2005, 22h58

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