일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- dabase
- hibernate
- SpringMVC
- Vue
- k8s
- builder-pattern
- 해시맵
- vuejs
- cd
- superBuilder
- CI
- 자바
- 코딩테스트연습
- java
- docker
- Oracle
- DevOps
- IntelliJ
- map
- 뷰
- 알고리즘
- ORM
- CKA
- 프로그래머스
- Di
- Spring
- programmers
- CI/CD
- JPA
- Kubernetes
Archives
- Today
- Total
문홍의 공부장
[Oracle] 오라클 기본키(PK) 2개 이상 지정하기 본문
반응형
DB를 관리하다 보면 기본키를 2개 이상 지정하여야 하는 경우가 있다.
테이블 생성 시 기본키를 지정할 때, 아래와 같이 생성한다면 기본키 에러가 발생한다.
CREATE TABLE TEST(
CODE VARCHAR2(30) PRIMARY KEY,
SEQ NUMBER PRIMARY KEY
);
ORA-02260: table can have only one primary key
기본키는 복수가 되는데 왜? 라는 의문을 가질수 있지만
'기본키를 구성하는 컬럼이 복수일 수는 있어도'
'기본키가 복수일 수는 없다' 라고 생각하면 이해가 쉬울 것 같다.
그럼 기본키를 구성하는 컬럼을 복수로 하기위해선 이와 같이 하나의 기본키 명에 해당 컬럼들을 포함시키는 방식으로 제약조건을 구성하여야 한다.
CREATE TABLE TEST(
CODE VARCHAR2(30),
SEQ NUMBER,
CONSTRAINT TEST_PK(기본키이름) PRIMARY KEY(CODE, SEQ)
);
Table TEST이(가) 생성되었습니다.
이 경우 두 개 컬럼이 하나의 기본키로 작동하기 때문에 컬럼1 / 2는 각각 중복될 수 있으나, 컬럼 1 & 2 의 값이 중복되는 경우에는 기본키의 UNIQUE 오류를 내게 된다.
INSERT INTO TEST (CODE, SEQ) VALUES ('A', '001');
INSERT INTO TEST (CODE, SEQ) VALUES ('A', '002');
INSERT INTO TEST (CODE, SEQ) VALUES ('A', '003');
INSERT INTO TEST (CODE, SEQ) VALUES ('B', '001');
INSERT INTO TEST (CODE, SEQ) VALUES ('B', '002');
INSERT INTO TEST (CODE, SEQ) VALUES ('A', '001'); -- Unique constraint violated
References:
반응형
'개발 > Database' 카테고리의 다른 글
Database Index 에 관하여: Index 의 개념, 자료구조, 효율적인 인덱스 생성 전략 (DB Index) (0) | 2023.04.04 |
---|---|
[Oracle] IO 오류 - The Network Adapter could not establish the connection 해결 (2) | 2020.04.26 |
[Oracle] 다중 LIKE 연산자 - 정규표현식 (REGEXP_LIKE) (0) | 2020.04.07 |
[DB] ORACLE 11g 설치 및 환경설정, sqldeveloper 계정 설정 (0) | 2020.02.11 |