Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Déclencheur d'historique de table dans SQL Server ?

Si chaque utilisateur a un compte, vous pouvez utiliser le SYSTEM_USER fonction pour déterminer l'utilisateur actuel. Cependant, si toutes vos connexions passent par un compte proxy, comme c'est généralement le cas dans la plupart des configurations de sites Web, vous devez vous fier au bon ID utilisateur transmis à l'instruction Update :

CREATE TRIGGER [update_history] ON MyTable
FOR UPDATE
AS
INSERT MyTable_History (id, BudgetNumber, PositionNumber, ModifiedDate, action, userId)
SELECT id, BudgetNumber, PositionNumber, GETDATE(), 'BEFORE UPDATE', inserted.userId
FROM MyTable
    Join inserted
        On inserted.id = MyTable.id

INSERT MyTable_History (id, BudgetNumber, PositionNumber, ModifiedDate, action, userId)
SELECT id, BudgetNumber, PositionNumber, GETDATE(), 'AFTER UPDATE', userId
FROM inserted