Create table Employee_Test(Emp_ID int Identity,Emp_name varchar(100),Emp_sal Decimal(10,2))
create table Employee_Test_Audit(Emp_ID int,Emp_name varchar(100),Emp_sal Decimal(10,2),Audit_Action varchar(100),Audit_Timestamp datetime)
CREATE TRIGGER trgAfterInsert ON [dbo].[Employee_Test]FOR INSERTASdeclare @empid int;declare @empname varchar(100);declare @empsal decimal(10,2);declare @audit_action varchar(100);select @empid=i.Emp_ID from inserted i;select @empname=i.Emp_Name from inserted i;select @empsal=i.Emp_Sal from inserted i;set @audit_action=‘Inserted Record -- After Insert Trigger.‘;insert into Employee_Test_Audit(Emp_ID,Emp_Name,Emp_Sal,Audit_Action,Audit_Timestamp)values(@empid,@empname,@empsal,@audit_action,getdate());PRINT ‘AFTER INSERT trigger fired.‘GO
CREATE TRIGGER trgAfterUpdate ON [dbo].[Employee_Test]FOR UPDATEASdeclare @empid int;declare @empname varchar(100);declare @empsal decimal(10,2);declare @audit_action varchar(100);select @empid=i.Emp_ID from inserted i;select @empname=i.Emp_Name from inserted i;select @empsal=i.Emp_Sal from inserted i;if update(Emp_Name)set @audit_action=‘Updated Record -- After Update Trigger.‘;if update(Emp_Sal)set @audit_action=‘Updated Record -- After Update Trigger.‘;insert into Employee_Test_Audit(Emp_ID,Emp_Name,Emp_Sal,Audit_Action,Audit_Timestamp)values(@empid,@empname,@empsal,@audit_action,getdate());PRINT ‘AFTER UPDATE Trigger fired.‘GO
CREATE TRIGGER trgAfterDelete ON [dbo].[Employee_Test]AFTER DELETEASdeclare @empid int;declare @empname varchar(100);declare @empsal decimal(10,2);declare @audit_action varchar(100);select @empid=d.Emp_ID from deleted d;select @empname=d.Emp_Name from deleted d;select @empsal=d.Emp_Sal from deleted d;set @audit_action=‘Deleted -- After Delete Trigger.‘;insert into Employee_Test_Audit(Emp_ID,Emp_Name,Emp_Sal,Audit_Action,Audit_Timestamp)values(@empid,@empname,@empsal,@audit_action,getdate());PRINT ‘AFTER DELETE TRIGGER fired.‘GO
CREATE TRIGGER trgInsteadOfDelete ON [dbo].[Employee_Test]INSTEAD OF DELETEASdeclare @emp_id int;declare @emp_name varchar(100);declare @emp_sal int;select @emp_id=d.Emp_ID from deleted d;select @emp_name=d.Emp_Name from deleted d;select @emp_sal=d.Emp_Sal from deleted d;BEGINif(@emp_sal>1200)beginRAISERROR(‘Cannot delete where salary > 1200‘,16,1);ROLLBACK;endelsebegindelete from Employee_Test where Emp_ID=@emp_id;COMMIT;insert into Employee_Test_Audit(Emp_ID,Emp_Name,Emp_Sal,Audit_Action,Audit_Timestamp)values(@emp_id,@emp_name,@emp_sal,‘Deleted -- Instead Of Delete Trigger.‘,getdate());PRINT ‘Record Deleted -- Instead Of Delete Trigger.‘endENDGO
原文:http://www.cnblogs.com/wupd2014/p/4944444.html