728x90
반응형
SQL에서 테이블 생성 시 PK로 사용하는 컬럼은 대게 자동 증가(Auto Increment)를 사용한다.
MySQL에서 테이블 생성시 PK에 Auto_Increment를 사용하면 되지만 오라클에는 없기 때문에
시퀀스와 트리거를 조합해 기능을 구현할 수 있다.
12c 이상에서는 IDENTITY 컬럼을 사용할 수 있다.
1. 시퀀스
시퀀스 생성
CREATE SEQUENCE my_sequence
START WITH 1 -- 시작 값
INCREMENT BY 1 -- 증가 값
NOCACHE -- 캐싱 안 함 (안정성 위해)
NOCYCLE; -- 최댓값 도달 시 다시 시작 안 함
시퀀스를 사용하여 INSERT
INSERT INTO my_table (id, name)
VALUES (my_sequence.NEXTVAL, 'JOO');
시퀀스 값 조회
SELECT my_sequence.CURRVAL FROM dual;
2. 시퀀스 + 트리거
테이블 생성
CREATE TABLE my_table (
id NUMBER PRIMARY KEY,
name VARCHAR2(100)
);
시퀀스 생성
CREATE SEQUENCE my_sequence START WITH 1 INCREMENT BY 1;
트리거 생성
CREATE OR REPLACE TRIGGER my_table_before_insert
BEFORE INSERT ON my_table
FOR EACH ROW
WHEN (NEW.id IS NULL)
BEGIN
:NEW.id := my_sequence.NEXTVAL;
END;
/
INSERT
INSERT INTO my_table (name) VALUES ('JOO');
INSERT INTO my_table (name) VALUES ('JOOO');
SELECT * FROM my_table;
3. IDENTITY (Oracle 12c 이상)
테이블 생성
CREATE TABLE my_table (
id NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
name VARCHAR2(100)
);
INSERT
INSERT INTO my_table (name) VALUES ('JOO');
IDENTITY 옵션
- GENERATED ALWAYS AS IDENTITY - 자동 생성 (수동 삽입 불가)
- GENERATED BY DEFAULT AS IDENTITY - 자동 생성 (수동 삽입 가능)
728x90
반응형
'개발 > ORACLE' 카테고리의 다른 글
ORACLE - ORA-25156 ANSI 조인, (+) (2) | 2024.11.20 |
---|---|
Oracle 힌트절 (1) | 2024.11.07 |
Oracle 인덱스 (0) | 2024.08.16 |
Oracle Explain Plan Operation (0) | 2024.08.02 |
Oracle 튜닝 - 실행 계획 (0) | 2024.08.02 |