개발을 수행하다보면 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를 변경하고 싶다면 아래의 절차로 변경해주면 됩니다.
- 해당 table에 설정되어 있는 PK 삭제 (Drop)
- 해당 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 -
댓글