데이터베이스 고유번호를 자동증가로 해 놓으면 중간에 번호가 건너뛰는 경우가 생긴다.
아래 sql 스크립트를 이용해서 자동증가가 되지 않고 중간에 빈 번호 없이 들어가도록 설정할 수 있다.
create function [dbo].[FUNC_INT_IDX_이름]()
returns int
begin
declare @idx int
declare @minIdx int
declare @newIdx int
declare @maxIdx int
-- idx 찾아서 넣기 위한 준비
if(not exists(select * from 테이블명))
set @idx = 1
else
begin
select @minIdx = min(idx) from 테이블명
if(@minIdx > 1)
set @idx = 1
else
begin
select @maxIdx = max(idx) from 테이블명
select top 1 @newIdx = rn from
(
select idx, (ROW_NUMBER() OVER (Order by idx) + @minIdx) - 1 as rn
from 테이블명
)tt
where idx <> rn
if(@newIdx is not null)
set @idx = @newIdx
else
set @idx = @maxIdx + 1
end
end
return @idx
end
사용법 :
insert 시에 idx나 고유번호 들어가는 부분에 dbo.FUNC_INT_IDX_이름() 해주면 자동으로 빈값이 들어온다.
참고로 테이블에 고유번호부분을 idx로 했을경우에만 사용가능 컬럼명이 idx가 아닐경우 idx를 컬럼명으로 바꿔주면된다.
하나 만들어두고 계속 바꿔가면서 사용중...-0-;;
댓글 영역