Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Trigger della cronologia delle tabelle in SQL Server?

Se ogni utente ha un account, puoi utilizzare il SYSTEM_USER funzione per determinare l'utente corrente. Tuttavia, se tutte le tue connessioni passano attraverso un account proxy, come è tipico nella maggior parte delle configurazioni di siti Web, devi fare affidamento sull'ID utente corretto che viene passato all'istruzione 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