Salut tout le monde, Je suis entrain d'écrire une stored procedure qui update mon "Inventaire".

Ma base de donnée possède 6 tables. Sois "Produit", "Inventaire", "Emplacement", "Departement", "Fournisseur", "Localisation".

Chaque table possède une clé primaire sous le nom de "id".

J'ai fait une stored procedure qui fais un select de certain champs, jusqu'à là, tout va bien!

Voici les champs que je selectionne -> CodeProduit, DescriptionProduit, QuantiteInventaire, Emplacement, Departement, compagnieInventaire, Fournisseur, taxProduit, prixProduit.

Le problème survient lorsque je fais un update.

Exemple:
CodeProduit : 45a.......45b
DescriptionProduit : livre......crayon
QuantiteInventaire : 4........2
Emplacement : Mur droit ....... Mur droit
Departement : dept1.........dept1
compagnieInventaire : comp1.......comp2
Fournisseur : fourn1.........fourn2
taxProduit : vrai.........vrai
prixProduit: 2,00......5,00

Donc, si je décide de modifier l'emplacement du "crayon" pour Mur Gauche, considérant que j'ai le même "id" pour l'emplacement, sois exemple id=1 pour le mur droit. Evidemment, les 2 articles vont changés d'Emplacement. Ce que je ne veux pas, considérant que je n'ai que déplacer le crayon!


Voici ma procédure :

Code : 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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
 
ALTER PROCEDURE [dbo].[mettreAjourInventaire] 
	-- Add the parameters for the stored procedure here
	@idInventaire int,
	@idProduit int,
	@idDepartement int,
	@idFournisseur int,
	@idEmplacement int,
	@code nvarchar(30),
	@Description nvarchar(70),
	@Quantite int,
	@Emplacement nvarchar(50),
	@Departement nvarchar(30),
	@Compagnie nvarchar(30),
	@Fournisseur nvarchar(30),
	@Taxable bit,
	@Prix float,
	@estDevalue bit,
	@estSupprime bit
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;
 
    -- Insert statements for procedure here
 
	update   db_produit
	set		 db_produit.code_produit = @code,
			 db_produit.ProduitDescription = @Description, 
			 db_produit.ProduittaxeTPS = @Taxable, 
			 db_produit.Réserver1 = @Prix, 
			 ProduitEst_devalué = @estDevalue, 
			 ProduitEst_supprimé=@estSupprime
 
	where	db_produit.id = @idProduit
 
 
	update  db_inventaire
	set		db_inventaire.InventaireQuantité = @Quantite, 
		    db_inventaire.InventaireCompagnie = @Compagnie
 
	where	db_Inventaire.ID = @idInventaire
 
 
	update  db_emplacement
	set		db_emplacement.EmplacementDescription = @Emplacement
 
	where	db_emplacement.id = @idEmplacement
 
 
	update  db_departement
	set		DepartementCode = @Departement
 
	where   db_departement.id = @idDepartement
 
 
	update  db_fournisseur
	set		FournisseurCode = @Fournisseur
 
	where   db_fournisseur.id = @idFournisseur
END
Bon, je comprend que je ne dois pas faire "where db_emplacement.id = @idEmplacement". Mais, je n'arrive pas à trouver une méthode qui va sélectionner la bonne item sans toucher au Id!

Si quelqu'un pourrait m'aider ça serait grandement apprécié!

Ps: J'ai le même probleme pour département et fournisseur!