防止姓名重复解决

这里以Oracle 10g为实,项目中需要录入人员,而人员的姓名是不能重复的,如果有重复,需要在后面增加1,2,3.....

首先,判断姓名是否存在

select * from hr_archives where username='张三';

  如果存在,获取所有张三1、张三2的个数

   select count(*) from hr_archives where regexp_like(username,'\d*$') ;

*思考:这里有个问题,如果录入的就是张三1,而数据库中已经存在张三、张三1、张三2、张三3;则上面的方法结果是 张三11 而不是我们想要的张三4;

  好,我们这样 select count(*) from hr_archives where  REGEXP_REPLACE(username,'\d*$','') = REGEXP_REPLACE('张三1','\d*$',''),

  这样我们录入了张三4;

  但是,如果我们满足上面,第一步中,如果我直接录入张三6,这是满足的,此时数据库有张三、张三1、张三2、张三3,张三4,张三6,我们再录入张三的时候,

  第二步会给我返回的结果是张三6,但是张三6已经存在;

问题就探讨到这里,暂时就这样实现了,虽然不完美。

 

posted on 2017-01-12 11:37  胖子略显瘦  阅读(214)  评论(0编辑  收藏  举报