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 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
| USE [Gest_Seq]
GO
/****** Object: Trigger [dbo].[trg_HistoricInsertion] Script Date: 04/17/2015 15:50:17 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*
Déclencheur : trg_HistoricInsertion
Createur : J.L. Durand, F.R. Broussais
Date : 16/04/02
Objet : Insère un mouvement dans la table HISTORIQUE contenant les données sur la modification d'un enregistrement de la table PARAMETRE
Les champs tracés (i.e. on affiche l'ancienne et la nouvelle valeur dans l'historique) sont :
pa_valparam, pa_option1, pa_option2 et pa_observation
Se déclenche en cas d'insertion, de modification ou de suppression dans la table PARAMETRE
Le champ he_Mvt indique la nature de la mise à jour (Ajout, Modif, Supp)
Object : Insert a record in HISTORIQUE table containt data which have modify in PARAMETRE table.
The fields lay out are pa_valparam,pa_option1,pa_option2 and pa_observation
This trigger start on insert,update or detele record in PARAMETRE table
The field he_Mvt gine the nature of update
Commentaire : utilise la procédure stockée spSGM_GetUser
Mise à jour : 13/09/2004, FR BROUSSAIS : Pas de mise à jour si le nom de paramèter est NULL. Modif nécessaire suite à la mise à jour en cascade Sequence-->Parametre
*/
CREATE TRIGGER [dbo].[trg_HistoricInsertion] ON [dbo].[Parametre]
FOR UPDATE, INSERT, DELETE
AS
DECLARE
@date datetime,
@IdSeq int,
@IdSeq_alt int,
@index int,
@nomparam varchar(30),
@newvalparam varchar(30),
@oldvalparam varchar(30),
@newoption1 varchar(30),
@oldoption1 varchar(30),
@newoption2 varchar(30),
@oldoption2 varchar(30),
@newObs varchar(255),
@oldObs varchar(255),
@Mvt varchar(10),
@User varchar(20)
SELECT @idseq = sq_idseq, @nomparam = pa_nomparam, @index= pa_index,
@oldvalparam=pa_valparam, @oldoption1=pa_option1, @oldoption2=pa_option2, @oldObs = pa_Observation
FROM DELETED
IF @index IS NULL
BEGIN
SET @Mvt= 'Ajout'
SELECT @newvalparam= pa_valparam,@newoption1= pa_option1, @newoption2=pa_option2,
@idseq = sq_idseq, @nomparam = pa_nomparam, @index= pa_index
FROM INSERTED
END
ELSE
BEGIN
SELECT @newvalparam= pa_valparam,@newoption1= pa_option1, @newoption2=pa_option2,@newObs=pa_observation
FROM INSERTED
IF COLUMNS_UPDATED() >0
BEGIN -- Modification
-- IF COLUMNS_UPDATED() &236 > 0 -- Calcul du &236 : 2^2 (ValParam) + 2^3 (Idx) + 2^5 (option1) + 2^6 (option2) + 2^7 (observation)
-- Cette condition fonctionne bien mais pour l'instant on met à jour l'historique dans tous les cas... voir si c'est bien utile
SET @Mvt='Modif'
END
ELSE -- Suppression
BEGIN
SET @Mvt='Supp'
END
END
-- Execution de la procédure stockée spSGM_GetUser avec retour de paramètre le nom du USER
-- Execute de storeproc spSGM_GetUser with the user name in output parameter
EXECUTE spSGM_GetUser @user out
IF @index IS NOT NULL
BEGIN
INSERT INTO HISTORIQUE (
sq_idseq, pa_nomparam, pa_index, he_date, he_Mvt, pl_idpersonnel,
he_newvalparam, he_oldvalparam,he_newoption1, he_oldoption1, he_newoption2,he_oldoption2, he_newobservation, he_oldobservation, hostname)
SELECT
@idseq, @nomparam, @index, getdate(),@Mvt, @User,
@newvalparam, @oldvalparam, @newoption1, @oldoption1, @newoption2, @oldoption2, @newobs, @oldobs,(SELECT HostName FROM master..sysprocesses WHERE spid=@@SPID )
END
END
GO |
Partager