create trigger 员工_部门_岗位_变动
on 员工表
after insert, update, delete
as
begin
if exists (select * from inserted)
begin
insert into 人事变更表 (工号,原部门名,原岗位名,新部门名,新岗位名, 日期,备注)
select 工号, null ,null, inserted.部门名,inserted.岗位名,getdate(),'新进员工'
from inserted
end;
if exists (select * from deleted)
begin
insert into 人事变更表 (工号,原部门名,原岗位名,新部门名,新岗位名, 日期,备注)
select inserted.工号, deleted.部门名,deleted.岗位名, inserted.部门名,inserted.岗位名,getdate(),'员工变动'
from deleted, inserted
where deleted.工号 = inserted.工号
and (deleted.部门名 <> inserted.部门名 or deleted.岗位名 <> inserted.岗位名);
end;
if exists (select * from deleted)
and not exists (select * from inserted
where 工号 = inserted.工号)
begin
insert into 人事变更表 (工号,原部门名,原岗位名,新部门名,新岗位名, 日期,备注)
select 工号, deleted.部门名,deleted.岗位名, null,null,getdate(),'员工离职'
from deleted;
end;
end
create trigger 员工_部门_岗位_变动
on 员工表
after insert, update, delete
as
begin
if exists (select * from inserted)
begin
insert into 人事变更表 (工号,原部门名,原岗位名,新部门名,新岗位名, 日期,备注)
select 工号, null ,null, inserted.部门名,inserted.岗位名,getdate(),'新进员工'
from inserted
end;
if exists (select * from deleted)
begin
insert into 人事变更表 (工号,原部门名,原岗位名,新部门名,新岗位名, 日期,备注)
select inserted.工号, deleted.部门名,deleted.岗位名, inserted.部门名,inserted.岗位名,getdate(),'员工变动'
from deleted, inserted
where deleted.工号 = inserted.工号
and (deleted.部门名 <> inserted.部门名 or deleted.岗位名 <> inserted.岗位名);
end;
if exists (select * from deleted)
and not exists (select * from inserted
where 工号 = inserted.工号)
begin
insert into 人事变更表 (工号,原部门名,原岗位名,新部门名,新岗位名, 日期,备注)
select 工号, deleted.部门名,deleted.岗位名, null,null,getdate(),'员工离职'
from deleted;
end;
end
用一个delete触发器做,不知道你为什么要使用两个
create trigger 员工_部门_岗位_变动
on 员工表
after insert, update
as
begin
if exists (select * from inserted)
begin
insert into 人事变更表 (工号,原部门名,原岗位名,新部门名,新岗位名,日期,备注)
select 工号, null, null, inserted.部门名, inserted.岗位名, getdate(), '新进员工'
from inserted
end;
if exists (select * from deleted)
begin
insert into 人事变更表 (工号,原部门名,原岗位名,新部门名,新岗位名,日期,备注)
select inserted.工号, deleted.部门名, deleted.岗位名, inserted.部门名, inserted.岗位名, getdate(), '员工变动'
from deleted, inserted
where deleted.工号 = inserted.工号
and (deleted.部门名 <> inserted.部门名 or deleted.岗位名 <> inserted.岗位名);
end;
end
不知道你这个问题是否已经解决, 如果还没有解决的话:对不起,作为AI语言模型,我无法判断问题的上下文信息和您的具体需求,无法提供更详细的解决方案。建议提供更详细的背景信息和问题描述,以便我更好地了解您的问题。