Accueil › Forums › SQL Server › Mise à jour d'une table Espion
- AuteurMessages
- 10 septembre 2015 à 15 h 19 min #2754Joris Maluly
Bonjour, j’ai un problème, je voudrais à chaque fois que un utilisateur modifier une table que les enregistrements concernant la table modifier soit mise à jour dans une table que j’appel T_ESPION_MODIFICATION_MATERIEL, j’ai écris une procédure stocké à cet effet mais lors que la mise à jours se fait sa modifie même les anciens modification, ce logique parce que dans la close where je mis : WHERE Materiel_Derive_Id = @Materiel_Derive_Id. je cherche comment contourné ce problème que ça puisse me mettre à jour seulement l’enregistrement en cours. je vous montre le code, je besoin de votre aide.
CREATE PROC [dbo].[Upd_Materiel_Derive]
@Materiel_Derive_Id VARCHAR (10),
@Marque_Id INT,
@Materiel_Id INT,
@Taille_Id INT,
@Quantite_Materiel INT,
@Nom_Utilisateur VARCHAR (200),
@Adresse_IP_Machine_Modifier NVARCHAR(max)AS
BEGIN
IF (@Marque_Id = ”)BEGIN
RAISERROR (N’Le champ ne peut pas être vide’,11,1)
RETURN 0
ENDIF (@Materiel_Id = ”)
BEGIN
RAISERROR (N’Le champ ne peut pas être vide’,11,1)
RETURN 0
ENDIF (@Taille_Id = ”)
BEGIN
RAISERROR (N’Le champ ne peut pas être vide’,11,1)
RETURN 0
ENDIF (@Quantite_Materiel = ”)
BEGIN
RAISERROR (N’Le champ ne peut pas être vide’,11,1)
RETURN 0
ENDIF (@Nom_Utilisateur = ”)
BEGIN
RAISERROR (N’Le champ ne peut pas être vide’,11,1)
RETURN 0
END
IF (@Adresse_IP_Machine_Modifier = ”)
BEGIN
RAISERROR (N’Le champ ne peut pas être vide’,11,1)
RETURN 0
END
BEGIN
BEGIN TRY
BEGIN TRANSACTION Upd_Materiel_Derive
INSERT INTO T_ESPION_MODIFICATION_MATERIEL(
[Materiel_Derive_Id], [Ancien_Marque_Id], [Ancien_Materiel_Id], [Ancien_Taille_Id], [Ancien_Quantite_Materiel] )
(
SELECT [Materiel_Derive_Id], [Marque_Id], [Materiel_Id], [Taille_Id], [Quantite_Materiel] FROM [dbo].[T_MATERIEL_DERIVE]WHERE Materiel_Derive_Id = @Materiel_Derive_Id
)UPDATE [dbo].[T_MATERIEL_DERIVE]
SET
Marque_Id = @Marque_Id,
Materiel_Id = @Materiel_Id,
Taille_Id = @Taille_Id, Quantite_Materiel =@Quantite_MaterielWHERE Materiel_Derive_Id = @Materiel_Derive_Id
UPDATE T_ESPION_MODIFICATION_MATERIEL
SET
Marque_Id = @Marque_Id,
Materiel_Id = @Materiel_Id,
Taille_Id = @Taille_Id,
Quantite_Materiel =@Quantite_MaterielWHERE Materiel_Derive_Id = @Materiel_Derive_Id
UPDATE T_ESPION_MODIFICATION_MATERIEL
SET Nom_Utilisateur = @Nom_Utilisateur,
Adresse_IP_Machine_Modifier = @Adresse_IP_Machine_Modifier,
Date_Modification = GETDATE()
WHERE Materiel_Derive_Id = @Materiel_Derive_IdCOMMIT TRANSACTION Upd_Materiel_Derive
END TRY
BEGIN CATCHIF @@TRANCOUNT > 0
ROLLBACK TRANSACTION Upd_Materiel_DeriveDECLARE @MESSAGE VARCHAR(4000), @SEVERITY INT
SELECT @MESSAGE = ERROR_MESSAGE(), @SEVERITY = ERROR_SEVERITY()
RAISERROR (@MESSAGE, @SEVERITY,1)END CATCH
END
END - AuteurMessages
Vous devez être connecté pour répondre à ce sujet.