WORK/DB

oracle insert 후 자동증가값 가져오기

im 수캥이 2018. 4. 4. 08:00

먼저 테이블 생성을 한다.


CREATE TABLE DEPT_INFO(

  DEPT_NO NUMBER NOT NULL

, DEPT_NAME

, CONSTRAINT PK_DEPT_INFO PRIMARY KEY(DEPT_NO ) 

)


이렇게 생성된 테이블에서 DEPT_NO 를 자동증가하여 INSERT 하고자 할때 ,

MSSQL 은 IDENTITY 를 사용하고 , MYSQL 은 AUTO_INCREMENT 를 사용한다.



ORACLE 의 경우에는 NEXTVAL 함수를 사용하는데 , 먼저 NEXTVAL 을 생성한다.


CREATE SEQUENCE DEPT_INFO_SEQ INCREMENT BY 1 START WITH 1;


위의 문장을 실행하면 되는데 ,


DEPT_INFO_SEQ  = 주고자 하는 값


INCREMENT  BY 1 = 증가되고자 할 값 ( 1이면 1씩 증가 , 10이면 10씩 증가한다. )


START  WITH 1 = 시작값 ( 100으로 적으면 100부터 시작된다. )


그 후에 


INSERT INTO DEPT_INFO (

  DEPT_NO

, DEPT_NAME

)VALUES(

 DEPT_INFO_SEQ.NEXTVAL

, '인사팀'

)


SELECT DEPT_INFO_SEQ.CURRVAL AS DEPT_NO FROM DUAL


이렇게 해주면 된다.

CURRVAL  의 경우 같은 세션에서 사용 가능 하기에 INSERT 후 그 증가된 값을 추출 할 수 있다.



XML에서 사용 할 거라면


<insert id="insertDeptInfo" parameterType="java.util.HashMap" >

INSERT INTO DEPT_INFO (

  DEPT_NO

, DEPT_NAME

)VALUES(

 DEPT_INFO_SEQ.NEXTVAL

, '인사팀'

)


<selectKey keyProperty="DEPT_NO" resultType="int">

SELECT DEPT_INFO_SEQ.CURRVAL AS DEPT_NO FROM DUAL

</selectKey>


</insert>



이렇게 하면 java 부분에서 현재의  DEPT_NO 값을 추출할 수 있다.

'WORK > DB' 카테고리의 다른 글

oracle 계정생성 및 테이블 스페이스 생성  (0) 2018.08.30
테이블 join 해서 update 하기  (0) 2018.04.09
DB별 LIKE 검색하기  (0) 2018.04.03
oracle table 생성 및 코멘트 추가하기  (0) 2018.03.30
테이블 정보 조회하기  (0) 2018.03.13