TRIGGERS
create database yjreddy
create table EmployeeTrigger
                           (
                           Eid int,
                           Ename varchar(50),
                           Address varchar(50),
                           Salary int
                           )
insert into EmployeeTrigger values(101,'yjreddy','Banglore',36000),(102,'Maheshredy','Hyderabad',26000),(103,'janibhasha','Guntur',25000),(104,'adi','hyd',25000),(105,'srikar','banglore',42000)
select * from
EmployeeTrigger
--after insert
trigger
create trigger afterinserttrigger on
employeetrigger
for insert
as
declare @empid int;
declare @ename varchar(50);
declare @address varchar(50);
declare @salary int;
declare @action varchar(100);
select @empid=i.Eid from inserted i;
select @ename =i.Ename from inserted i;
select @address=i.Address from inserted
i;
select @salary=i.Salary from inserted i;
set @action='after insert trigger fired'
insert into employeetrigger(Eid,Ename,Address,Salary)
values(@empid,@ename,@address,@salary)
print 'after insert trigger fired' +  convert(varchar(50),getdate());
insert into EmployeeTrigger values(106,'anil','hyderabad',42000)
--after update
trigger
 create trigger updatetrigger1 on
employeetrigger
 for update
 as
 declare @empid
int;
 declare @ename
varchar(50);
 declare
@address varchar(50);
 declare
@salary int;
 declare
@action varchar(50);
 select @empid=i.Eid from inserted i;
 select @ename=i.Ename from inserted i;
 select
@address=i.Address from inserted
i;
 select @salary
=i.Salary from inserted i;
 if update(Ename)
 set @action='updated record in the name
field--after update trigger';
 if update(Salary)
 set @action='updated record in the
salary field--after update trigger';
 insert into employeetrigger(Eid,Ename,Address,Salary)
 values(@empid,@ename,@address,@salary);
 print 'after update trigger fired'
 update  employeetrigger SET  salary=42000 where ADDRESS='BANGLORE'
 select * from
employeetrigger
DROP TRIGGER UPDATETRIGGER
--after delete
trigger
create trigger deletetrigger on
employeetrigger
for delete 
as
declare @empid int;
declare @ename varchar(50);
declare @address varchar(50);
declare @salary int;
declare @action varchar(50);
select @empid=d.Eid from deleted d;
select @ename =d.Ename from deleted d;
select @address=d.Address from deleted
d;
select @salary=d.salary from deleted d;
set @action='Records deleted';
 insert into employeetrigger(Eid,Ename,Address,Salary)
 values(@empid,@ename,@address,@salary);
 print 'Records are deleted from table'
 delete from employeetrigger where
Ename='anil'
--instead of
trigger
--instead delete
create trigger insteaddelete on
EmployeeTriggertableinstead 
instead of delete
as
declare @empid int;
declare @ename varchar(50);
declare @address varchar(50);
declare @salary int;
declare @action varchar(50);
select @empid=d.Eid from deleted d;
select @ename =d.Ename from deleted d;
select @address=d.Address from deleted
d;
select @salary =d.Salary from deleted d;
begin
if(@salary> 40000)
begin
RAISERROR('cant
delete records where salary is more than 40000',16,1);
ROLLBACK;
end
else
begin
delete from EmployeeTriggertableinstead where Eid=@empid;
commit;
insert into EmployeeTriggertableinstead(Eid,Ename,Address,Salary) values(@empid,@ename,@address,@salary)
print 'record deleted instead of trigger'
end
end
delete from EmployeeTriggertableinstead where Eid=104     
can we write both triggrs on the same table?
NO
No comments:
Post a Comment