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 qui ajoute dans une autre table


Sujet :

Développement SQL Server

  1. #1
    Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Août 2011
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2011
    Messages : 60
    Points : 47
    Points
    47
    Par défaut Trigger qui ajoute dans une autre table
    Salut tout le monde

    j'ai écrit un trigger qui me permet qu'à chaque fois que j'insers une nouvelle valeur d'une colonne C1 à une table T1 le trigger insert la meme valeur de colonne C1 à une autre table T2 mais le problème c'est qu'il insert la valeur de colonne en double , par exemple si j'ajoute 1 à la table T1 il m'affiche dans la table T2 1 1 :

    T1 -----C1-------
    1

    T2 -----C1-------
    1
    1

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CREATE TRIGGER tr_insert ON eleves 
    FOR INSERT 
    AS 
    INSERT INTO evaluations(idelv)
    SELECT idelv
    la structure des deux tables :
    eleves(idelv,nom,pren,datenais,lieunais,#classeid,...)
    evaluations(idelv,idmat,idtrim,note)

    idelv PK dans la table eleves
    le triplet (idelv,idmat,idtrim) Clé composée (idelv : FK ; idmat : FK ; idtrim : FK) issues des tables eleves , matieres , trimestres respectivement voici la structure des tables matieres et trimestres :

    matieres(idmat,libmat,typemat)

    trimestres(idtrim,libtrim,datedebut,datefin)

    donc la table evaluations n'est autre qu'une table qui est engendrée ou issue de la relation ternaire entre : eleves , matieres et trimestres ce que je veux c'est en fait saisir les notes(le champ "note") des élèves sans resaisir les "idelv" , "idmat" et "idtrim" car en fait ils sont déjà saisies et enregistrés dans leurs tables respectives c'est pour ça que je veux crée un Trigger pour qu'il puisse ajouter automatiquement les "idelv" , "idmat" et "idtrim" dans la table evaluations à chaque fois que j'ajoute ces memes clés primaires dans les tables : eleves , matieres et trimestres

    En fait je veux qu'à chaque fois que j'ajoute un nouvel élève(idelv) le trigger ajoute le meme "idelv" à la table evaluations car à mon avis le champs idelv qui est une clé étrangère dans la table evaluations ne nécéssite pas qu'on le resaisi encore une fois d'où l'idée de créer un trigger pour ajouter automatiquements les "idelv" à la table evaluations.

    Encore une chose , vu que la table evaluations contient trois clés étrangères n'est-il pas possible d'intégrer en un seul trigger la possibilité d'ajouter automatiquement les "idelv" dans la table eleves , les "idmat" dans la table matieres et enfin les "idtrim" dans la table trimestres. Merci d'avance

  2. #2
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    saisir les notes(le champ "note") des élèves sans resaisir les "idelv" , "idmat" et "idtrim" car en fait ils sont déjà saisies et enregistrés dans leurs tables respectives c'est pour ça que je veux crée un Trigger pour qu'il puisse ajouter automatiquement les "idelv" , "idmat" et "idtrim" dans la table evaluations à chaque fois que j'ajoute ces memes clés primaires dans les tables : eleves , matieres et trimestres
    C'est le principe même du modèle relationnel : aucune duplication de données.

    En fait je veux qu'à chaque fois que j'ajoute un nouvel élève(idelv) le trigger ajoute le meme "idelv" à la table evaluations car à mon avis le champs idelv qui est une clé étrangère dans la table evaluations ne nécéssite pas qu'on le resaisi encore une fois d'où l'idée de créer un trigger pour ajouter automatiquements les "idelv" à la table evaluations.
    Certes, mais il faut lui ajouter une note.
    C'est donc votre application qui doit collecter l'idelv, l'idmat et l'idtrim ET la note, puis les passer à une procédure stockée qui se charge de réaliser l'INSERT dans la table dbo.evaluations.
    La colonne note (comme toutes les autres colonnes d'ailleurs) de la table dbo.evaluations ne peuvent pas être non-valuées : elles ont la propriété NOT NULL.
    Ceci est normal car ne pas valuer l'un des attributs de cette relation n'a pas de sens.
    Il en est donc de même pour ajouter une ligne dans la table dbo.evaluations sans note.

    En conséquence, vous avez besoin d'un procédure stockée, pas d'un trigger.

    @++

  3. #3
    Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Août 2011
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2011
    Messages : 60
    Points : 47
    Points
    47
    Par défaut
    Merci beaucoup de vos précieux conseils mais vu mes limites dans la création de procédures stockées pouvez-vous me donner un exemple pour que je puisse s'appuyer dessus pour l'écrire car je débute à peine en base de données SQL SERVER car j'étais un adepte d'ACCESS.Merci de tout ce vous faites pour tous ceux qui vous viennes en aide.

    NB : Pour l'exemple je souhaite qu'il ressemble à peu de chose près à mon modèle de données c'est-à-dire concernant 4 tables , je m'excuse encore une fois.

Discussions similaires

  1. Réponses: 5
    Dernier message: 17/07/2013, 08h23
  2. Trigger qui ajoute dans une autre table
    Par devman2011 dans le forum Développement
    Réponses: 2
    Dernier message: 09/12/2011, 16h42
  3. JOIN avec une table qui est dans une AUTRE base access
    Par bastringue dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 30/05/2008, 14h41
  4. Réponses: 8
    Dernier message: 14/12/2007, 16h04
  5. Réponses: 9
    Dernier message: 20/10/2006, 14h32

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