找回密码
 注册账号

QQ登录

只需一步,快速开始

手机号码,快捷登录

手机号码,快捷登录

初学者课程:T3自学|T6自学|U8自学软件下载课件下载工具下载资料:通资料|U8资料|NC|培训|年结积分规则 | 使用常见问题Q&A
知识库:U8 | | NC | U9 | OA | 政务U8|U9|NCC|NC65|NC65客开|NCC客开新手必读 | 任务 | 快速增金币用友QQ群[微信群]
查看: 3787|回复: 8

[求助] sql及用友实施高手帮忙看看自己在U872里添加的触发器有问题吗?

[复制链接]
发表于 2009-11-17 11:23:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册账号

×
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

但实际使用还是没有实现要求,原有记录为最高学历的还是没变,是触发器那里有问题?
发表于 2009-11-17 12:18:39 | 显示全部楼层
学习下,先前没写过触发器。。。
发表于 2009-11-17 12:28:09 | 显示全部楼层
需要学习,还没有学会sql呢
发表于 2009-11-17 13:03:40 | 显示全部楼层
需要学习,还没有学会sql呢
发表于 2009-11-17 16:32:18 | 显示全部楼层
CREATE trigger pan2009
on ua_user
for insert
as
begin
update ua_user set TempPdw=''  from inserted  where ua_user.cUser_Id = inserted.cUser_Id
end


参考
 楼主| 发表于 2009-11-18 11:43:58 | 显示全部楼层
在新增人员教育经历操作时也确实跟踪到对hr_hi_edu表的insert语句了,但触发器确没有更新记录,还是有同一人多条最高学历记录
发表于 2009-11-24 16:52:02 | 显示全部楼层
学习下,还真没接触到过
发表于 2009-11-24 20:24:18 | 显示全部楼层
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
有点疑惑,你在触发器里面用了UPDATE这个表,那么是不是说,在UPDATE时候,又触发了这个触发器?
递归?你自己顺着逻辑计算一下,能得到结果么?依我看,这个东西拿触发器不好做
发表于 2009-11-24 20:26:50 | 显示全部楼层
建议你跟踪一下看你在更新这个表的时候,用友用了哪个存储过程?在这里面改比较好。
一般都不建议用触发器的。。
设计软件,一般也不用触发器
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

QQ|站长微信|Archiver|手机版|小黑屋|用友之家 ( 蜀ICP备07505338号|51072502110008 )

GMT+8, 2024-11-24 23:38 , Processed in 0.044022 second(s), 7 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表