|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité régulier
![]() Kamel GhanemEnseignant Inscription : août 2011 Messages : 42 ![]() |
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 :
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 |
||
|
|
00
|
|
|
#2 | ||
![]() ![]() ![]() Nicolas SouquetAdministrateur de base de données Inscription : janvier 2005 Messages : 4 670 ![]() |
Bonjour,
Citation:
Citation:
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. @++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes. Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012 |
||
|
00
|
|
|
#3 |
|
Invité régulier
![]() Kamel GhanemEnseignant Inscription : août 2011 Messages : 42 ![]() |
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. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com