[1. 개요]
unique key 의미와 사용 방법 정리
[2. 의미]
기본적으로 중복 데이터 저장을 방지하기 위함.
이미 이런 역할을 하는 Primary key 가 있고, PK 와의 차이점
- PK 와 달리 NULL 을 허용한다.
- 테이블 당 하나만 존재 할 수 있는 PK 와 달리, 여러 개 존재 할 수 있다.
[3. 생성 방법]
테이블 생성 시
CREATE TABLE `tmp`.`Message` (
`id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
`user_id` integer NOT NULL,
`user_to` integer NOT NULL,
`top_num` integer NOT NULL,
`priority` smallint NOT NULL,
`error` varchar(120) NOT NULL,
UNIQUE myunique (`user_id`, `user_to`, `top_num`) # 3가지 column 이 모두 같은 row는 하나만 존재한다.
);
show index from tmp.Message; # tmp.Message table 에서 index 를 조회한다.
index 생성을 별도로 명시하지 않아도, unique key 생성에 관여하는 모든 column 은 index 설정이 된다.
테이블 alter 시
ALTER TABLE `tmp`.`Message` ADD UNIQUE INDEX myunique1 (`error`);
# 또는
ALTER TABLE `tmp`.`Message` ADD UNIQUE KEY myunique1 (`error`);
# index 나 key 나 둘 다 같은 동작을 한다.
활용.
# 기존 unique index 에 또 다른 column 을 추가 해야 할 시
- 기존에 걸려 있던 unique key 를 제거하고,
- 새로 생성해야 한다.
ALTER TABLE `tmp`.`Message` DROP INDEX `myunique`;
ALTER TABLE `tmp`.`Message` ADD UNIQUE INDEX myunique (`id`, `user_id`, `user_to`, `top_num`);
주의 점
- 이미 pk 로 걸려 있는 `id` 항목을 새로운 unique key 추가 시
- pk 외, 새로운 index 를 또 만든다...
'MySQL' 카테고리의 다른 글
[작성해야 됨] mysql. 유용한 함수 (0) | 2024.02.22 |
---|---|
MySQL. 테이블 용량 관리 (0) | 2023.09.26 |
MySQL, innodb_autoinc_lock_mode (0) | 2023.06.21 |
MySQL, SQL_SAFE_UPDATES (0) | 2023.06.15 |
MySQL. LAST_INSERT_ID (0) | 2023.06.15 |