먼저 테이블 생성을 한다.
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 |