Vous êtes sur la page 1sur 2

CREATE TRIGGER trg_StatEnseignant ON [dbo].

[T_AnneeMatiereRepartitionEnseingnant ] FOR UPDATE AS Declare @CodeEnseignant int,@VolHCours real,@VolHTD real,@VolHTP real Declare @CodeClasseGroupe int,@Annee int,@CodeSem int,@CodeClasse int,@CodeMatie re int Declare @NbreMat int Select @Annee=Annee,@CodeSem=CodeSem,@CodeClasse=@CodeClasse,@CodeClasseGroupe= CodeClasseGroupe ,@CodeMatiere=CodeMatiere,@CodeEnseignant = CodeEnseignant,@VolHCours =VolHCours ,@VolHTD = VolHTD,@VolHTP= VolHTP from deleted if @VolHCours is null Set @VolHCours=0 if @VolHTD is null Set @VolHTD=0 if @VolHTP is null Set @VolHTP=0 Update T_AnneeEnseignant Set ChargeHCours=ChargeHCours-@VolHCours ,ChargeHTD=ChargeHTD-@VolHTD ,ChargeHTP=ChargeHTP-@VolHTP ,ChargeHTotal=ChargeHTotal-(@VolHCours+@VolHTD+@VolHTP) Where CodeEnseignant=@CodeEnseignant --Suppression Enseignant if @CodeEnseignant is not null Begin Update T_ClasseGroupe Set ChargeHTotCoursAff =ChargeHTotCoursAff- @VolHCours , ChargeHTotTDAff =ChargeHTotTDAff- @VolHTD , ChargeHTotTPAff =ChargeHTotTPAff- @VolHTP ,NbreMatAff=NbreMatAff-1 ,NbreMatRestant=NbreMatRestant+1 ,ChargeHTotAff=ChargeHTotAff-( @VolHCours + @VolHTD + @VolHTP ) Where CodeClasseGroupe=@CodeClasseGroupe --Select @NbreMat=count(*) --From T_AnneeMatiereRepartitionEnseingnant --Where Annee=@Annee And CodeSem=@CodeSem --And CodeClasse=@CodeClasse And CodeClasseGroupe=@CodeClasseGroupe --And CodeMatiere=@CodeMatiere And CodeEnseignant is null --if @NbreMat=0 --Update T_ClasseGroupe --Set NbreMatAff=NbreMatAff-1 --,NbreMatRestant=NbreMatRestant+1 --Where CodeClasseGroupe=@CodeClasseGroupe End Select @Annee=Annee,@CodeSem=CodeSem,@CodeClasse=@CodeClasse,@CodeClasseGroupe= CodeClasseGroupe ,@CodeMatiere=CodeMatiere,@CodeEnseignant = CodeEnseignant,@VolHCours =VolHCours ,@VolHTD = VolHTD,@VolHTP= VolHTP from inserted if @VolHCours is null Set @VolHCours=0 if @VolHTD is null Set @VolHTD=0 if @VolHTP is null Set @VolHTP=0 Update T_AnneeEnseignant Set ChargeHCours=ChargeHCours+@VolHCours ,ChargeHTD=ChargeHTD+@VolHTD ,ChargeHTP=ChargeHTP+@VolHTP ,ChargeHTotal=ChargeHTotal+(@VolHCours+@VolHTD+@VolHTP) Where CodeEnseignant=@CodeEnseignant

--Choix enseignant if @CodeEnseignant is not null Begin Update T_ClasseGroupe Set ChargeHTotCoursAff =ChargeHTotCoursAff+ @VolHCours , ChargeHTotTDAff =ChargeHTotTDAff+ @VolHTD , ChargeHTotTPAff =ChargeHTotTPAff+ @VolHTP ,ChargeHTotAff=ChargeHTotAff+( @VolHCours + @VolHTD + @VolHTP ) ,NbreMatAff=NbreMatAff+1 ,NbreMatRestant=NbreMatRestant-1 Where CodeClasseGroupe=@CodeClasseGroupe --Select @NbreMat=count(*) --From T_AnneeMatiereRepartitionEnseingnant --Where Annee=@Annee And CodeSem=@CodeSem --And CodeClasse=@CodeClasse And CodeClasseGroupe=@CodeClasseGroupe --And CodeMatiere=@CodeMatiere And CodeEnseignant is null --if @NbreMat=0 --Update T_ClasseGroupe --Set NbreMatAff=NbreMatAff+1 --,NbreMatRestant=NbreMatRestant-1 --Where CodeClasseGroupe=@CodeClasseGroupe End Declare @NbreEns int Select @NbreEns=Count(Distinct(CodeEnseignant)) From T_AnneeMatiereRepartitionEnseingnant Where CodeClasseGroupe=@CodeClasseGroupe And CodeEnseignant is not null Update T_ClasseGroupe Set NbreEnsAff=@NbreEns Where CodeClasseGroupe=@CodeClasseGroupe