Sangil's blog

https://github.com/ChoiSangIl Admin

ORACLE MAX+1을 증가시켜 SELECT로 가져오기(ROWNUM) DEV / DATABASE

2019-11-28 posted by sang12


개발을 하다보면 기본키를 NVL(MAX(SEQ)+1), 1)형태로 만들어둔 경우를 많이 볼 수 있다. 
이럴 경우에 해당 테이블에 데이터를 넣을려면 하나씩 키가 중복안되게 넣던지... PL/SQL을 사용하여 커서등을 이용해서 넣던지 할 수 있다. 너무 귀찮..
애초에 Oracle에서 제공해주는 Sequence로 만들었다면 편했을텐데... 

편하게 넣는 방법은 ROWNUM을 이용하여 해당 맥스값 시퀀스를 서브쿼리로 가져와서 ROWNU만큼 더해주면 된다. 

-예제
SELECT (SELECT MAX(10) FROM DUAL)+ ROWNUM SEQ , A 
FROM ( 
	SELECT 'DATA1' A FROM DUAL 
UNION ALL
SELECT 'DATA2' A FROM DUAL 
UNION ALL
SELECT 'DATA3' A FROM DUAL
UNION ALL
SELECT 'DATA4' A FROM DUAL
UNION ALL
SELECT 'DATA5' A FROM DUAL
)
(SELECT MAX(컬럼SEQ명) FROM DUAL)+ ROWNUM 

※ MAX+1은 유일성을 보장 안해주기때문에 항상 조심해서 사용해야한다.

#ROWNUM을 활용한 MAX+1 리스트 가져오기 #ORACLE #DATABASE #ORACLE MAX+1
REPLY