Bonjour tous,
Je m’essaye dans la réalisation de triggers. J’ai 3 tables :
Mouvements
Articles
Solde_article

Je voudrais mettre des déclencheurs (triggers) pour exécuter les événements d’ajout dans la table SoldeArticle, enregistrer le dernier PU et calculer le PMP de l’article concerné dans la table des articles. Je voudrais également contrôler le cas ou le stock est nul ou négatif mais je ne sais pas encore le faire. Je sollicite votre aide.

Cordialement.


Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON
GO
 
ALTER TRIGGER[SOLDE_AJOUT]
ON  [dbo].[MOUVEMENTS] 
 
FOR INSERT
AS 
 
DECLARE @l char(5), @i char(15),@q numeric(18,5),@p numeric(18,5),
@pm numeric(18,5),@lp numeric(18,5),@s numeric(18,5)
 
BEGIN
 
SELECT @l=INSERTED.LOCATION,@i=INSERTED.ITEM_CODE,
@q=INSERTED.QUANTITY,@p=INSERTED.LAT_VALUE FROM INSERTED
SELECT @s=dbo.SoldeArticle.PHYSICAL FROM dbo.SoldeArticle 
WHERE 
dbo. dbo.SoldeArticle.LOCATION=@l AND dbo.SoldeArticle.ITEM_CODE=@i
SELECT @pm=dbo.Articles.AVE_COST FROM dbo. Articles 
WHERE dbo. Articles.ITEM_CODE=@i
 
UPDATE dbo. SoldeArticle SET dbo. SoldeArticle.PHYSICAL = dbo. SoldeArticle.PHYSICAL + @q WHERE dbo. SoldeArticle.LOCATION=@l AND  dbo. SoldeArticle.ITEM_CODE=@i
UPDATE dbo. Articles SET LAT_COST=@p,AVE_COST= ((@q*@p + @s*@pm)/(@q +@s))WHERE dbo. Articles.ITEM_CODE=@i
 
END