본문 바로가기
잡다지식

Mysql에서 multi PK (다중 기본키) 설정하기

by 청양호박이 2022. 1. 13.

개발을 수행하다보면 Primary Key를 한개만 가지고 진행할 때도 있지만, 상황에 따라서는 Key가 여러가 필요할 수 있습니다. 이때는 PK를 여러개 설정을 해야합니다. 따라서 간단하게 multi PK를 설정하는 방법에 대해서 알아보도록 하겠습니다. 

 

multi PK가 필요한 상황은 여러가지가 있겠지만,

user_id stocks_id stocks_name ins_date
1 000090 삼성전자 2022-01-13 00:00:01
1 000190 LG전자 2022-01-13 00:00:02
2 000090 삼성전자 2022-01-13 00:00:03

다음과 같이 user_id만 pk로 지정한다면, stocks_id를 다수 보유하더라도 1개 행만 입력이 되게 됩니다. 추가 입력을 하고 싶어도 에러나서 입력이 안되죠. 이럴때 필요한게 multi PK 입니다. user_id와 stocks_id를 PK로 잡으면 두개를 합친 key가 unique하게되서 중복되어 입력이 안될일은 없겠죠??

 

 

1. Multiple primary key 설정


아래는 single PK를 설정하는 방법입니다. 

CREATE TABLE idv_stocks(
	user_id VARCHAR(50) PRIMARY KEY,
	stocks_id VARCHAR(10),
    stocks_name VARCHAR(30),
	ins_date DATETIME
);

잘 입력이 됬습니다. 그렇다면 multi PK를 아무고민없이 동일한 방식으로 아래와 같이 설정해 봅니다.

 

[실패 Query]

CREATE TABLE idv_stocks(
	user_id VARCHAR(50) PRIMARY KEY,
	stocks_id VARCHAR(10) PRIMARY KEY,
	stocks_name VARCHAR(30),
	ins_date DATETIME
);

========================================
[Result]
SQL 오류 (1068): Multiple primary key defined.

큭 에러가 발생합니다. 그렇다면 어떤 방식을 사용해야 할까요?? 아래와 같이 변경해 보도록 합니다.

 

[성공 Query]

CREATE TABLE idv_stocks(
	user_id VARCHAR(50),
	stocks_id VARCHAR(10),
	stocks_name VARCHAR(30),
	ins_date DATETIME,
	PRIMARY KEY (user_id, stocks_id)
);

 

 

2. Primary key 변경


PK를 변경하고 싶다면 아래의 절차로 변경해주면 됩니다. 

 

  1. 해당 table에 설정되어 있는 PK 삭제 (Drop)
  2. 해당 table에 원하는 PK를 추가 (Add)

 

[PK Drop]

ALTER TABLE idv_stocks DROP PRIMARY KEY;

[Add Primary Key]

ALTER TABLE idv_stocks ADD PRIMARY KEY (user_id);

그럼 즐거운 개발 되세요~~~

 

- Ayotera Lab -

댓글