想对主键使用自增列,但通过自增发现都是从1开始的,而且删除后也不能在重复。
我想这样的:st_0001,st_0002,st_0003,删除st_0003后,新增下一条记录仍然从st_0003开始
st_0001
st_0002
st_0003
st_0004
st_0005
....
我想这样的:st_0001,st_0002,st_0003,删除st_0003后,新增下一条记录仍然从st_0003开始
st_0001
st_0002
st_0003
st_0004
st_0005
....
找出最小未使用的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)
st_0001
st_0002
st_0003
st_0004
st_0005
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
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
先得到一个(ID+1)的集合A(此集合还须把原ID的起始最小ID加上)
再用集合A与集合B比较,得到A不在B中的最小ID即为所求ID