triggers-DML- instead of triggers



Create view vOfficeDetail

as 

select EmployeeId, Name, Place from Employee Inner join Departement on Employee.Id=Departement.DID

 Instead of Insert

alter trigger tr_vOfficeDetail on vOfficeDetail

instead of Insert

as begin

Declare 

@iName varchar(10),

@OName varchar(10),

@DID int,


@newId int


select @newId=max(Id) from Employee

set @newId=@newId + 1;



select @OName=Name from inserted


select @iName=Name from Employee where Name=@OName


if (LOWER(@iName)=LOWER(@OName))

Begin 

    Raiserror('UserName already specified',16,1)

Return

end


select @DID=DID from Departement inner join inserted on inserted.Place=Departement.Place

if(@DID is Null)

Begin 

 raiserror('Invalid Place',16,1)

 return

end


Declare @EmployeeId int,

@Name Varchar(10),

@Place varchar(10)


select @EmployeeId=EmployeeId, @Name=Name, @Place=Place from inserted


insert into Employee select @newId,@Name,@EmployeeId



end


Instead of update


alter trigger tr_Officedetail_afterupdate on vOfficeDetail

instead of update

as begin

If (Update(EmployeeId))

Begin 

Raiserror('case sensitive cannot update EmployeeId',16,1)

Return

End


If(UPdate(Place))

Begin

Declare @iId int, @Place varchar(10)

 select @iId=DID from Departement inner join inserted on inserted.Place=Departement.Place


 if (@iId is NULL)

 Begin

 Raiserror('Cant find the Department you want to update',16,1)

 return

 End

 --update Departement set Place= @Place from inserted inner join Departement on inserted.Place=Departement.Place

 update Departement set Place= inserted.Place from inserted inner join Departement on inserted.Place=Departement.Place

End



End


Instead of Delete


alter trigger tr_officeDetail_delete on vOfficeDetail

instead of delete

as begin

     Delete Employee from Employee inner join deleted on deleted.EmployeeId=Employee.EmployeeId

End

Comments