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
Post a Comment