Lors de la configuration d'une piste d'audit, je n'ai aucun problème à suivre qui met à jour ou insérer des enregistrements dans une table, cependant, suivre qui supprime les enregistrements semble plus problématique.
Je peux suivre les insertions / mises à jour en incluant dans l'insertion / mise à jour le champ "UpdatedBy". Cela permet au déclencheur INSERT / UPDATE d'avoir accès au champ "UpdatedBy" via inserted.UpdatedBy
. Cependant, avec le déclencheur Supprimer, aucune donnée n'est insérée / mise à jour. Existe-t-il un moyen de transmettre des informations au déclencheur de suppression afin qu'il sache qui a supprimé l'enregistrement?
Voici un déclencheur d'insertion / mise à jour
ALTER TRIGGER [dbo].[trg_MyTable_InsertUpdate]
ON [dbo].[MyTable]
FOR INSERT, UPDATE
AS
INSERT INTO AuditTable (IdOfRecordedAffected, UserWhoMadeChanges)
VALUES (inserted.ID, inserted.LastUpdatedBy)
FROM inserted
Utilisation de SQL Server 2012
SUSER_SNAME()
cela fonctionnerait dans une situation comme une application Web où un seul utilisateur pourrait être utilisé pour la communication de base de données pour l'ensemble de l'application.
SUSER_SNAME()
est la clé pour savoir qui a supprimé l'enregistrement.