Update Trigger Syntax
  1. Create trigger tr_tblStaff_ForUpdate
  2. on tblStaff
  3. for Update
  4. as
  5. Begin
  6. Declare @Id int
  7. Declare @OldName nvarchar(20), @NewName nvarchar(20)
  8. Declare @OldSalary int, @NewSalary int
  9. Declare @OldGender nvarchar(20), @NewGender nvarchar(20)
  10. Declare @OldDeptId int, @NewDeptId int
  11. declare @hostname varchar(30)
  12. select @hostname = hostname FROM sys.sysprocesses WHERE spid = @@SPID
  13. Declare @AuditString nvarchar(1000)
  14. Select *
  15. into #TempTable
  16. from inserted
  17. While(Exists(Select Id from #TempTable))
  18. Begin
  19. Set @AuditString = ''
  20. Select Top 1 @Id = Id, @NewName = Name,
  21. @NewGender = Gender, @NewSalary = Salary,
  22. @NewDeptId = DepartmentId
  23. from #TempTable
  24. Select @OldName = Name, @OldGender = Gender,
  25. @OldSalary = Salary, @OldDeptId = DepartmentId
  26. from deleted where Id = @Id
  27. Set @AuditString = 'Staff with Id = ' + Cast(@Id as nvarchar(4)) + ' changed' + 'Using Host' + @hostname + ' Is Updated At ' + cast(Getdate() as nvarchar(20))
  28. if(@OldName <> @NewName)
  29. Set @AuditString = @AuditString + ' NAME from ' + @OldName + ' to ' + @NewName + 'Using Host' + @hostname
  30. if(@OldGender <> @NewGender)
  31. Set @AuditString = @AuditString + ' GENDER from ' + @OldGender + ' to ' + @NewGender + 'Using Host' + @hostname
  32. if(@OldSalary <> @NewSalary)
  33. Set @AuditString = @AuditString + ' SALARY from ' + Cast(@OldSalary as nvarchar(10))+ ' to ' + Cast(@NewSalary as nvarchar(10)) + 'Using Host' + @hostname
  34. if(@OldDeptId <> @NewDeptId)
  35. Set @AuditString = @AuditString + ' DepartmentId from ' + Cast(@OldDeptId as nvarchar(10))+ ' to ' + Cast(@NewDeptId as nvarchar(10)) + 'Using Host' + @hostname
  36. insert into tblStaffAudit values(@AuditString)
  37. Delete from #TempTable where Id = @Id
  38. End
  39. End
Update Trigger Syntax Description
Declare the variables to hold old and updated data.
  1. Declare @Id int
  2. Declare @OldName nvarchar(20), @NewName nvarchar(20)
  3. Declare @OldSalary int, @NewSalary int
  4. Declare @OldGender nvarchar(20), @NewGender nvarchar(20)
  5. Declare @OldDeptId int, @NewDeptId int
  6. declare @hostname varchar(30)
  7. select @hostname = hostname FROM sys.sysprocesses WHERE spid = @@SPID
Variable to build the audit string.
  1. Declare @AuditString nvarchar(1000)
Load the updated records into a temporary table.
  1. Select *
  2. into #TempTable
  3. from inserted
Loop through the records in temp table.
  1. While(Exists(Select Id from #TempTable))
  2. Begin
Initialize the audit string to an empty string.
  1. Set @AuditString = ''
Select first row data from temp table.
  1. Select Top 1 @Id = Id, @NewName = Name,
  2. @NewGender = Gender, @NewSalary = Salary,
  3. @NewDeptId = DepartmentId
  4. from #TempTable
Select the corresponding row from the deleted table.
  1. Select @OldName = Name, @OldGender = Gender,
  2. @OldSalary = Salary, @OldDeptId = DepartmentId
  3. from deleted where Id = @Id
Build the audit string dynamically.
  1. Set @AuditString = 'Employee with Id = ' + Cast(@Id as nvarchar(4)) + ' changed' + 'Using Host' + @hostname
  2. if(@OldName <> @NewName)
  3. Set @AuditString = @AuditString + ' NAME from ' + @OldName + ' to ' + @NewName + 'Using Host' + @hostname
  4. if(@OldGender <> @NewGender)
  5. Set @AuditString = @AuditString + ' GENDER from ' + @OldGender + ' to ' + @NewGender + 'Using Host' + @hostname
  6. if(@OldSalary <> @NewSalary)
  7. Set @AuditString = @AuditString + ' SALARY from ' + Cast(@OldSalary as nvarchar(10))+ ' to ' + Cast(@NewSalary as nvarchar(10)) + 'Using Host' + @hostname
  8. if(@OldDeptId <> @NewDeptId)
  9. Set @AuditString = @AuditString + ' DepartmentId from ' + Cast(@OldDeptId as nvarchar(10))+ ' to ' + Cast(@NewDeptId as nvarchar(10)) + 'Using Host' + @hostname
Insert all @AuditString parameter value, which is passed to tblStaffAudit table data.
  1. insert into tblStaffAudit values(@AuditString)
Delete the row from temp table, so we can move to the next row.
  1. Delete from #TempTable where Id = @Id
Afterwards, update some data.
  1. update tblStaff set Name='SatyaPrakash-KULU' where Id=3
  2. select * from tblStaff where id=3
Execute this table mentioned in an update trigger.
  1. select * from tblStaffAudit

The update statement notofication like this,

Staff with Id = 3 changedUsing HostV4UDT-09 Is Updated At Apr 12 2017 3:16PM NAME from SatyaPrakash-KULUe to SatyaPrakash-KULUUsing HostV4UDT-09

Summary

Update the records, using update trigger.