MySQL에서 새 컬럼을 추가하고 자동 채번을 설정하기
- 2일 전
- 2분 분량
이번에는 MySQL로 운용 중인 데이터베이스의 테이블에, 새 컬럼을 추가해 자동 채번을 설정할 필요가 생겼으므로, 그 처리의 흐름을 정리합니다.
PurchaseList 테이블 변경
먼저 테이블의 현재 구조를 확인합니다.
show columns from robin.PurchaseList;현재 테이블 구조는 다음과 같습니다.
Field | Type | Null | Key | Default | Extra |
|---|---|---|---|---|---|
ASIN | varchar(10) | NO | PRI | NULL | |
SKU | varchar(255) | NO | PRI | NULL | |
PurchaseDatetime | datetime | YES | NULL | ||
Brand | varchar(255) | YES | NULL | ||
Title | varchar(255) | YES | NULL | ||
Model | varchar(255) | YES | NULL | ||
LocalCurrency | varchar(10) | YES | NULL | ||
Quantity | double | YES | NULL | ||
LocalPrice | double | YES | NULL | ||
Price | double | YES | NULL | ||
shipped_num | double | YES | NULL | ||
seller_id | varchar(14) | NO | NULL | ||
CreateDate | datetime | NO | CURRENT_TIMESTAMP | ||
UpdateDate | datetime | NO | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
다음으로 새 컬럼 `stock_id`를 맨 앞에 추가합니다.
ALTER TABLE PurchaseList ADD stock_id INT FIRST;새 컬럼 'stock_id'의 값은 모두 NULL이므로, 연번을 채워 넣습니다.
다음 쿼리로 모든 항목에 연번이 부여됩니다.
set @n:=0;
update PurchaseList set stock_id=@n:=@n+1;
'stock_id'를 기본 키로 재설정합니다.
ALTER TABLE PurchaseList DROP PRIMARY KEY, ADD PRIMARY KEY (stock_id);그 후, 새 컬럼 `shipped_num`을 `Price` 뒤에 추가합니다.
ALTER TABLE PurchaseList ADD shipped_num double AFTER Price;
다음으로 `stock_id`에 자동 증분 설정을 합니다.
ALTER TABLE PurchaseList MODIFY stock_id INT NOT NULL AUTO_INCREMENT;이것으로 PurchaseList 테이블의 변경이 완료되었습니다.
Field | Type | Null | Key | Default | Extra |
stock_id | int(11) | NO | PRI | NULL | auto_increment |
ASIN | varchar(10) | NO | NULL | ||
SKU | varchar(255) | NO | NULL | ||
PurchaseDatetime | datetime | YES | NULL | ||
Brand | varchar(255) | YES | NULL | ||
Title | varchar(255) | YES | NULL | ||
Model | varchar(255) | YES | NULL | ||
LocalCurrency | varchar(10) | YES | NULL | ||
Quantity | double | YES | NULL | ||
LocalPrice | double | YES | NULL | ||
Price | double | YES | NULL | ||
shipped_num | double | YES | NULL | ||
shipped_num | double | YES | NULL | ||
seller_id | varchar(14) | NO | NULL | ||
CreateDate | datetime | NO | CURRENT_TIMESTAMP | ||
UpdateDate | datetime | NO | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
PurchaseList 테이블에 자동 채번이 이루어지는지 확인
마지막으로 실제 데이터 조작을 했습니다. 최신 5개의 레코드를 표시하는 쿼리가 다음입니다.
SELECT stock_id, SKU, ASIN FROM PurchaseList ORDER BY stock_id DESC LIMIT 5;stock_id | SKU | ASIN |
3683 | 2023-0472 | B08833PNRN |
3682 | 2023-0471 | B07WSKKMFV |
3681 | 2023-0470 | Z1-6CEL-2X |
3680 | 2023-0469 | B0CJJ4SFVY |
3679 | 2023-0494 | B0CJJ2WQ1F |
연번이 설정되어 있음을 확인할 수 있었습니다.
마지막으로 새 데이터에 대해 자동 연번이 동작하는지 확인합니다.
INSERT INTO PurchaseList (ASIN, SKU) VALUES ('test', 'test');
SELECT stock_id, SKU, ASIN FROM PurchaseList ORDER BY stock_id DESC LIMIT 5;stock_id | SKU | ASIN |
3684 | test | test |
3683 | 2023-0472 | B08833PNRN |
3682 | 2023-0471 | B07WSKKMFV |
3681 | 2023-0470 | Z1-6CEL-2X |
3680 | 2023-0469 | B0CJJ4SFVY |
자동 채번되고 있음을 확인할 수 있었습니다.
뒤처리로 확인용 데이터를 삭제하고 종료.
DELETE FROM PurchaseList WHERE ASIN='test' AND SKU='test';
이상이 MySQL에서 자동 채번용 컬럼을 추가하는 흐름입니다. 앞으로의 시스템의 정상적인 운용에 참고해 주세요.



댓글