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