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