此代码缺少什么?如果我正在更新worker的状态,并且已删除的状态为6,则它应该仅执行第一个嵌套的if语句,而不是在第二个if else语句中执行,而是在这种情况下,即使我删除了数据,也要执行worker状态是6时执行两个if else语句。.任何帮助或建议对我来说都是一个很大的帮助。
这是我的代码
if exists(select * from inserted) and exists(select * from deleted)
begin
select
@Worker_id = ID,
@StatusID = StatusID,
@Date = GETDATE()
from
inserted;
select
@oldStatusID = StatusID
from
deleted;
if(@StatusID <> @oldStatusID)
if(@oldStatusID = 6)
if(@StatusID = 1 or @StatusID = 2 or @StatusID = 3)
begin
select
@Description = FirstName + ' ' + LastName + ' has been Hired'
from
inserted;
EXEC sp_history @Worker_id,'HIRED',@Description,@Date
end
else if(@oldStatusID = 1 or @oldStatusID = 2 or @oldStatusID = 3 or @oldStatusID = 4 or @oldStatusID = 5 or @oldStatusID = 9)
if(@StatusID = 1)
begin
select
@Description = FirstName + ' ' + LastName + ' has changed its status into Laborer'
from
inserted;
EXEC sp_history @Worker_id,'CHANGED STATUS(laborer)',@Description,@Date
end
if(@StatusID = 2)
begin
select
@Description = FirstName + ' ' + LastName + ' has changed its status into Main Office'
from inserted;
EXEC sp_history @Worker_id,'CHANGED STATUS(main office)',@Description,@Date
end
if(@StatusID = 3)
begin
select
@Description = FirstName + ' ' + LastName + ' has changed its status into Admin'
from inserted;
EXEC sp_history @Worker_id,'CHANGED STATUS(admin)',@Description,@Date
end
if(@StatusID = 4)
begin
select
@Description = FirstName + ' ' + LastName + ' has changed its status into Blocklisted'
from inserted;
EXEC sp_history @Worker_id,'BLOCKLISTED',@Description,@Date
end
if(@StatusID = 5)
begin
select
@Description = FirstName + ' ' + LastName + ' has changed its status into Terminated'
from inserted;
EXEC sp_history @Worker_id,'TERMINATED',@Description,@Date
end
if(@StatusID = 9)
begin
select
@Description = FirstName + ' ' + LastName + ' has changed its status into Resigned'
from inserted;
EXEC sp_history @Worker_id,'RESIGNED',@Description,@Date
end
end