I have a trigger like below on user table to insert into the audit table with which column was updated and previous value:
ALTER TRIGGER [dbo].[trgAfterUpdat
Try using query similar to this one – it will generate If statements for all columns of a given table.
Note: This is not fully tested and probably needs more adjustments but you see the idea behind it.
select 'if update(' + C.name + ')
begin
select @OldValue=j.' + C.name + ' from deleted j;
set @fieldname = ''' + C.name + ''';
insert into tbl_Audit(user_key, field_name, previuos_Value, user_name)
values(@User_Key ,@fieldname,@OldValue, @CreateUser);
end'
from sys.all_columns C
inner join sys.tables T on C.object_id = T.object_id
where T.name = 'table_name' and T.schema_id = SCHEMA_ID('schema_name')
If wouldn’t go with while loop because it can probably cause perf issues…