본문 바로가기

STUDY/TIL

Composite Key (복합 키)

PRIMAR KEY가 두 컬럼에 지정되어 있는걸 보고 어..?해서 찾아봤다

Composite Key

복합 키(Composite Key)는 두 개 이상의 컬럼을 Key로 지정하는 것을 말한다.
PK(Primary Key, 기본키)는 한 테이블에 한 개만 존재할 수 있다.
하지만 꼭 한 테이블에 한 컬럼만 기본키로 지정할 수 있는 것은 아니다.

 

아래와 같이 PRIMARY KEY를 두 컬럼에 지정하면 에러가 발생한다.

mysql> create table test (
    -> id bigint primary key,
    -> seq bigint primary key);
ERROR 1068 (42000): Multiple primary key defined

 

하지만 PRIMARY KEY(column1, column2) 이런식으로 기본키를 여러 컬럼을 조합하여 설정하는 것은 가능하다.

mysql> create table test (
    -> id bigint not null,
    -> seq bigint not null,
    -> primary key(id, seq)
    -> );
Query OK, 0 rows affected (0.01 sec)

 

이렇게 컬럼을 조합하여 기본키로 설정할 경우에는 여러 컬럼을 모두 조합해서 UNIQUE해야 한다.
아래와 같이 id와 seq컬럼에 모두 1의 값을 넣고 저장한 뒤 다시 한 번 동일하게 저장하려고 하면 에러가 발생한다.
id는 동일하게 1이고, seq의 값만 2로 저장하는 것은 성공한다.

mysql> insert into test (id, seq)
    -> values(1, 1);
Query OK, 1 row affected (0.00 sec)

mysql> insert into test (id, seq) values(1, 1);
ERROR 1062 (23000): Duplicate entry '1-1' for key 'test.PRIMARY'

mysql> insert into test (id, seq)
    -> values(1, 2);
Query OK, 1 row affected (0.00 sec)

'STUDY > TIL' 카테고리의 다른 글

React | Uncontrolled Components  (0) 2021.07.25
의존관계 주입 방법 네 가지  (0) 2021.07.13
객체지향 설계 원칙 5가지 (SOLID)  (0) 2021.07.05
Mock, TestDouble  (0) 2021.06.22
JWT를 어디에 저장할까  (0) 2021.05.26