Mise à jour d'une table Espion

Accueil Forums SQL Server Mise à jour d'une table Espion

  • Auteur
    Messages
  • #2754
    Joris 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
    END

    IF (@Materiel_Id =  »)

    BEGIN
    RAISERROR (N’Le champ ne peut pas être vide’,11,1)
    RETURN 0
    END

    IF (@Taille_Id =  »)
    BEGIN
    RAISERROR (N’Le champ ne peut pas être vide’,11,1)
    RETURN 0
    END

    IF (@Quantite_Materiel =  »)

    BEGIN
    RAISERROR (N’Le champ ne peut pas être vide’,11,1)
    RETURN 0
    END

    IF (@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_Materiel

    WHERE 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_Materiel

    WHERE 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_Id

    COMMIT TRANSACTION Upd_Materiel_Derive
    END TRY
    BEGIN CATCH

    IF @@TRANCOUNT > 0
    ROLLBACK TRANSACTION Upd_Materiel_Derive

    DECLARE @MESSAGE VARCHAR(4000), @SEVERITY INT
    SELECT @MESSAGE = ERROR_MESSAGE(), @SEVERITY = ERROR_SEVERITY()
    RAISERROR (@MESSAGE, @SEVERITY,1)

    END CATCH
    END
    END

Vous devez être connecté pour répondre à ce sujet.

Partager