Exercices Corrigés Triggers declencheurs | TD trigger | TP declencher ou triggers avec correction Solution


Soit la BD Commerce



Produit
Ref
Desig
Prix
Qut_st
P1
Ordinateur         
6000
0
P2
Table               
500
0
P3
Bureau             
1500
0

QUESTIONS 


1-    Créer le trigger T1 qui permet d’ajouter la quantité entrée de la table Achat à la quantité en stock dans la table produit  correspondant à chaque insertion d’un achat.
2-    Créer le trigger T2 qui permet de retrancher la quantité sortie de la table Vente de la quantité en stock dans la table produit  correspondant à chaque insertion d’une vente.
3-    Ecrire le trigger T3 dans la table Achat qui permet de mettre à jour la Qut_St de la table Produit après chaque suppression d’un achat.
4-    Ecrire le trigger T4 dans la table Vente qui permet de mettre à jour la Qut_St de la table Produit après chaque suppression d’une Vente.
5-    Modifier le trigger T1 pour mettre à jour la Qut_st de la table Produit après chaque modification d’une opération d’achat.
6-    Modifier le trigger T2 pour mettre à jour la Qut_st de la table Produit après chaque modification d’une opération de Vente.

Correction TP Trigger declencheur


1-

create trigger t1 on Achat  for insert
as
            begin
              declare @QE int,@QS int,@Qst int,@Qst2 int
             
              select @ref=Ref,@QE=Qnt_Ent from inserted
             
              update Produit Set @Qnt_st=@QE+@Qnt_st where Ref=@ref
             
            end
end
CREATE TRIGGER T1  ON Achat
FOR INSERT
AS
begin
  declare @Ref char(10)
  declare @Qte int
  select @Ref=Réf ,@Qte=Qut_Ent from inserted

 update Produit Set Qut_st=Qut_st+@Qte
 where Ref=@Ref
End
2-
CREATE TRIGGER T2 ON Vente
FOR INSERT
AS
begin
 declare @Ref char(10)
 declare @Qut_sortie int
 declare @Qut_st int

select @Ref=Réf, @Qut_sortie=Qut_sortie,@Qut_st=Qut_st from Inserted, Produit where Inserted.Réf=Produit.Réf

 if(@Qut_sortie>@Qut_st)
    begin
      raiserror ('Quantité non disponible',16,2)
      Rollback
      return
   end

 update Produit Set Qut_st=Qut_st-Qut_sortie
 where Ref=@Ref
end






3-
CREATE TRIGGER T3  ON Achat
FOR DELETE
AS
begin
  declare @Ref char(10)
  declare @Qte int
  select @Ref=Réf ,@Qte=Qut_Ent from deleted

 update Produit Set Qut_st=Qut_st- @Qte
 where Ref=@Ref
End
ou
CREATE TRIGGER T3 ON Achat
FOR DELETE
AS
begin
  update Produit Set Qut_st=Qut_st- Qut_Ent
  from Produit,deleted
  where Produit.Ref=deleted.Réf
end

4-
CREATE TRIGGER T4 ON Vente
FOR  DELETE
AS
begin
 update Produit Set Qut_st=Qut_st+Qut_Sortie
 from Produit,deleted
 where Produit.Ref=deleted.Réf
end

5-
CREATE TRIGGER T1  ON Achat
FOR INSERT,Update
AS
begin
 update Produit Set Qut_st=Qut_st + Qut_Ent
 from Produit,Inserted
 where Produit.Ref=Inserted.Réf

 update Produit Set Qut_st=Qut_st - Qut_Ent
 from Produit,deleted
 where Produit.Ref=deleted.Réf
end
6-
CREATE TRIGGER T2 ON Vente
FOR INSERT, UPDATE
AS
begin
 declare @Ref char(10)
 declare @Qut_sortie int
 declare @Qut_st int
 select @Ref=Réf ,@Qut_st=Qut_st,  @Qut_sortie=Qut_sortie
from Produit,Inserted
where Produit.Ref=Inserted.Réf

  if(@Qut_sortie>@Qut_st)
    begin
      raiserror ('Quantité non disponible',16,2)
      Rollback
      return
   end
 update Produit Set Qut_st=Qut_st-Qut_sortie
 from Produit,Inserted
 where Produit.Ref=Inserted.Réf

 update Produit Set Qut_st=Qut_st+Qut_sortie
 from Produit,deleted
 where Produit.Ref=deleted.Réf
end




Article plus récent Article plus ancien

Leave a Reply

Telechargement