본문으로 바로가기

[Oracle]오라클 INSERT시 자동채번(MAX+1)

category DB\SQL 2019. 2. 20. 11:13

자동으로 증가하는 컬럼을 PK로 잡거나 할떄 INSERT시 자동 증가로 시퀀스를 사용하지만 MAX+1을 사용할 때도 있다.


하지만 MAX+1은 동시성보장이 되지않아 insert 시 다른 트랜잭션에의해 중복값이 등록 될 수 있어 주의해야한다.


사용하는 방법은 간단하다.

SELECT NVL(MAX(증가컬럼)+1,0FROM 테이블)
cs

위 구문을 INSERT VALUE 절에 넣어주면 된다.


테스트 테이블(COUNTRIES)


위 테이블에 REGION_ID를 증가시켜 입력하기.

INSERT INTO COUNTRIES(
        COUNTRY_ID,
        COUNTRY_NAME,
        REGION_ID) 
    VALUES(
        'CB',
        'CODING BUB',
        (SELECT NVL(MAX(REGION_ID)+1,0FROM COUNTRIES));
cs