Réponse acceptée !
ce qu'il serait bon a savoir c'est combient de champs diférent sont modifier en moyenne a chaque fois:
si a chaque modif tu modifie plusieurs enregistrement a la fois dans ce cas je te conseil un truc dans ce genre:
=====================
TBL_SRC
ID Champ1 Champ2 Champ3 ...
Clef primaire : ID.
=====================
TBL_HISTO
DATEVERSION ID Champ1 Champ2 Champ3 ...
Clef primaire : DATEVERSION et ID.
=====================
CREATE TRIGER TBL_SRC_UPDATE
ON TBL_SRC AFTER UPDATE,DELETE
BEGIN
INSERT INTO TBL_HISTO
(DATEVERSION ID Champ1 Champ2 Champ3)
SELECT
GETDATE (), ID, Champ1, Champ2, Champ3
FROM deleted;
END
=====================
Cette méthode te permet de travailler sur la table TBL_SRC sans te préocuper de l'historique.
Mais a chaque modification l'ancienne version serat créer dans la table d'historique.
Ensuite pour récupérer toutes les version précédente d'un enregistrement :
SELECT * FROM Tbl_Histo WHERE ID = @ID ORDER By DATEVERSION DESC
Pour revenir a une ancienne version :
UPDATE TBL_SRC
SET
Champ1=Champ1,
Champ2=Champ2,
Champ3=Champ3
FROM Tbl_Histo inner join TBL_SRC ON Tbl_Histo.ID=TBL_SRC.ID
WHERE
Tbl_Histo.ID=@ID AND Tbl_Histo.DATEVERSION = @DATE
ce qui est marrant c'est que même revenir à une ancienne version créer un nouvelle enregfistrement dans la table HISTO
enfin tu peux même récupérer les enregistrement supprimer (je te laisse trouver comment).