sql >> Base de Datos >  >> RDS >> Sqlserver

¿Desencadenador de historial de tablas en SQL Server?

Si cada usuario tiene una cuenta, puede usar el SYSTEM_USER función para determinar el usuario actual. Sin embargo, si todas sus conexiones pasan a través de una cuenta de proxy, como es típico en la mayoría de las configuraciones de sitios web, entonces debe confiar en que se pase el ID de usuario adecuado a la declaración de actualización:

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