상세 컨텐츠

본문 제목

데이터베이스 고유번호 넣기

Programming/ms-sql

by luckey 2010. 10. 20. 18:33

본문

데이터베이스 고유번호를 자동증가로 해 놓으면 중간에 번호가 건너뛰는 경우가 생긴다.

아래 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-;;

관련글 더보기

댓글 영역