想对主键使用自增列,但通过自增发现都是从1开始的,而且删除后也不能在重复。
我想这样的:st_0001,st_0002,st_0003,删除st_0003后,新增下一条记录仍然从st_0003开始
st_0001
st_0002
st_0003
st_0004
st_0005
....

解决方案 »

  1.   

    参考:
    找出最小未使用的IDSELECT (CASE WHEN EXISTS(SELECT * FROM t b WHERE b.ID = 1)
            THEN MIN(ID) + 1 ELSE 1 END) as ID 
    FROM t 
    WHERE NOT ID IN (SELECT a.ID - 1 FROM t a)
      

  2.   

    上面是针对identity列的~     为整数 1,2,3这种情况的,你的情况需要经过处理的
    st_0001
    st_0002
    st_0003
    st_0004
    st_0005
      

  3.   

    create Function Max_id()
    returns varchar(10)
    as
    begin
       declare @Max_id varchar(10)
       select @Max_id='st_'+cast(10001 + isnull(max(id),0) as varchar) from 表
       return @Max_id
    end
      

  4.   

    create Function Max_id()
    returns varchar(10)
    as
    begin
       declare @Max_id varchar(10)
       select @Max_id='st_'+right(cast(10001 + isnull(max(id),0) as varchar),4) from 表
       return @Max_id
    end
      

  5.   

    设现在的ID集合为B
    先得到一个(ID+1)的集合A(此集合还须把原ID的起始最小ID加上)
    再用集合A与集合B比较,得到A不在B中的最小ID即为所求ID