Hi @Ramadas Ravikumar ,
Welcome to Microsoft Q&A!
Please refer to below and check whether it is helpful to you.
--DDL
create table Tool_Management
(ID int identity(1,1),
Name varchar(100),
Age int,
Occupation varchar(100))
insert into Tool_Management(Name,Age,Occupation) values
('Ravi',26,'GoldSmith')
create table Tool_Management_History
(ID int identity(1,1),
Master_Table_ID int,
Old_Name varchar(100),
New_Name varchar(100),
Old_Age int,
New_Age int,
Old_Occupation varchar(100),
New_Occupation varchar(100),
Changed_By varchar(100),
Changed_At datetime,
Change_Type varchar(20))
--create update trigger
create trigger my_trigger_update_Tool_Management_History
on Tool_Management
after update
as
begin
insert into Tool_Management_History(Master_Table_ID,Old_Name ,New_Name ,Old_Age,New_Age,Old_Occupation,New_Occupation ,Changed_By,Changed_At,Change_Type)
select a.id,b.Name,case when a.Name=b.Name then NULL else a.Name end,b.Age,case when a.Age=b.Age then NULl else a.Age end
,b.Occupation,case when a.Occupation=b.Occupation then NULL else a.Occupation end,SYSTEM_USER , GETDATE(),'updated'
from inserted a
inner join deleted b
on a.id=b.id
end
--create insert trigger
create trigger my_trigger_insert_Tool_Management_History
on Tool_Management
after insert
as
begin
insert into Tool_Management_History(Master_Table_ID,Old_Name ,New_Name ,Old_Age,New_Age,Old_Occupation,New_Occupation ,Changed_By,Changed_At,Change_Type)
select id,NULL,Name,NULL,Age,NULL,Occupation,SYSTEM_USER , GETDATE(),'inserted'
from inserted
end
--perform some insert and update actions
update Tool_Management
set Age=28
where id=1
insert into Tool_Management(Name,Age,Occupation) values
('Sun',25,'Mary')
--validate the results
select * from Tool_Management
select * from Tool_Management_History
Output:
Best regards,
Melissa
If the answer is helpful, please click "Accept Answer" and upvote it.
Note: Please follow the steps in our documentation to enable e-mail notifications if you want to receive the related email notification for this thread.