max+1을 시퀀스로 0 1 6,833

by 아이알이 [Tibero] [2024.11.20 22:48:26]


현재 고객번호(number(22)타입)를 pk로 하는 테이블에서 함수를 통해 아래와 같이 채번되고있는데요.

select to_number(to_char(SYSDATE,'YYYY') || substr(MAX(고객번호),5,11))+1 from 고객테이블

--->ex. 202400005237647 (15자리)

동시성이슈 발생하고있어 시퀀스로 변경해야할거같은데 ..고객번호는 15자리로 유지해야하면(시퀀스 99999999999이후 대비)

select to_number(to_char(sysdate,'YYYY') || lpad(시퀀스.nextval,11,'0')) from dual

로 채번하고 시퀀스는 연도바뀌면 초기화되도록 추가개발하는 방법뿐이 없을까요 ??

(202400000000001 데이터는 없고, 2025년 되기전까지 지금 max값까진 채번안된다는 가정하에 시퀀스생성시 시작값은 1로..)

 

by 우리집아찌 [2024.11.27 13:10:49]

PK 를 그냥 시퀀스로 채번하시고 년도는 따로 컬럼을 가져가세요.

PK 를 인조키로 생성시 PK값에 의미부여는 권장하지 않습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입