[oracle] 날짜 + 번호 일련번호 생성하기
# 개요
Oracle에서 스케줄 등록 없이 날짜 + 숫자 와 같은 형식의 일련번호를 생성해보자.
# 코드
1 2 3 4 5 6 | select to_number(to_char(sysdate,'YYMMDD') || nvl(to_char(max(substr(sales_no,7))),'00'))+1 from sales where to_char(sales_date,'YYYYMMDD') = to_char(sysdate,'YYYYMMDD') | cs |
# 설명
일련번호의 형태로 많이 사용하는 방식은 YYYYMMDD + 00001 와 같은 방식일 것이다.
이런 일련번호를 생성하기 위해서는 스케줄을 등록하여 하루가 지날때마다 초기 값을 지정해주는 방법이 있었다.
개발 중인 프로그램의 특성상 DB서버를 항상 켜두는 것이 아니기 때문에 insert 시 계산하는 방법에 대해 고민해보았다.
아직 학생이라 효율성의 측면까지는 생각하지 못하였고 동작은 잘 되고 있다.
# 전체 SQL 및 DB
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <insert id="addNewOrder" parameterType="com.nara.order.vo.AddOrder"> <selectKey order="BEFORE" keyProperty="sales_no" resultType="int"> select to_number(to_char(sysdate,'YYMMDD') || nvl(to_char(max(substr(sales_no,7))),'00'))+1 from sales where to_char(sales_date,'YYYYMMDD') = to_char(sysdate,'YYYYMMDD') </selectKey> insert into sales (sales_no, cust_no, cost_sum, sales_date, pay, section) values (#{sales_no}, #{cust_no}, #{cost_sum}, sysdate, #{pay}, #{section}) </insert> | cs |
# 동작 결과
'개발 > Oracle' 카테고리의 다른 글
오라클에서 시간을 기준으로 데이터 복구 (0) | 2021.09.16 |
---|---|
[oracle] DB Link (0) | 2016.04.07 |