在录入人事资料时,生成一个自动编号,比如person00001,person00002,person00003…………,这个很好实现,但是当员工离职时,要自动把编号空来给下一个新进员工,例如:person00002离职了,就让下一个新进员工使用person00002,如果person00002没有离职,就增加新的person00004,
因该如何实现?还要考虑函数的资源消耗,尽量小一些

解决方案 »

  1.   

    # 初始化
    create table SN(code char(10) primary key, used int)
    insert into sn values('person00001', 0)
    ...
    insert into sn values('person99999', 0)# 申请
    select min(code) from sn where used = 0
    update sn set used = 1 where code = 申请编号# 离职
    update sn set used = 1 where code = 离职人员编号
      

  2.   

    同意viena(维也纳nn-实心木头人)的做法
      

  3.   

    这样不行,因为编号不是唯一的
    A部门的员工编号是0001,0002……;
    B部门员工编号也是0001,0002……
    也就是说,首先要找到部门,在从部门里面分配编号,A部门和B部门同时有0001,0002……这些编号
    而且要做到资源消耗小,就应该整合到原来的人事表中,增加一个字段,而不是增加一张表,当数据量很多的时候,表之间的关联是很消耗资源的,请大家给我一个大概的算法,不一定要具体的代码
      

  4.   

    你的表里面应该有职工姓名这一字段吧?暂定字段名为name正常情况下在职的职工name一定不是空的。
    离职的时候name置为空。
    有人加入的时候,先看看有没有name是空的。有的话直接就给他那个。
      

  5.   

    可以用先用sql查询语句来查询确认是否有空缺的编号,如果有则使用,如果没有则添加新编号。
      

  6.   

    同意viena(维也纳nn-实心木头人)的做法