|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册账号
×
U872的人力资源中,已将人事附加信息中的教育经历(表:hr_hi_edu)设置为多当前记录表,增加“maxs”(布尔型字段)作为是否最高学历判断,现在还想达到新增记录maxs如为1(是最高学历),自动将同一人的其他行maxs更新为0(不是最高学历),我自己写了个触发器:
ALTER TRIGGER [dbo].[udt_tbu]
ON [dbo].[hr_hi_edu]
FOR insert,update AS --插入和修改触发器
declare @cPsn_Num nvarchar --人员编码
declare @maxs bit --是否最高学历
declare @iRecordID int --同一人的教育经历ID
select @cPsn_Num=cPsn_Num ,@maxs=maxs,@iRecordID=iRecordID from inserted
if @maxs=1 and exists(select 1 from hr_hi_edu where cPsn_Num=@cPsn_Num and maxs=1 group by iRecordID having(count(maxs)>1)) --判断新增记录是否为最高学历,以及同一人的最高学历记录是否在一条以上
begin
update [dbo].[hr_hi_edu] set maxs=0 where cPsn_Num=@cPsn_Num and iRecordID<>@iRecordID --将除新增记录外的最高学历更新为否,不能将新插入或更新的值也修改掉
end
但实际使用还是没有实现要求,原有记录为最高学历的还是没变,是触发器那里有问题? |
|