Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Gatilho de histórico de tabela no SQL Server?


Se cada usuário tiver uma conta, você pode usar o SYSTEM_USER função para determinar o usuário atual. No entanto, se todas as suas conexões passarem por uma conta proxy, como é típico na maioria das configurações de sites, você precisará confiar no userId adequado sendo passado para a instrução 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