[MySQL] 생성된 컬럼에 auto_increment 속성 부여하기

2023. 8. 25. 11:32·Development/MySql

기존의 tdel_idx 필드에 저장된 값이 순서대로 들어가 있다면, 다음 단계로 tdel_idx를 AUTO_INCREMENT 속성을 가진 PRIMARY KEY로 변경할 수 있다.

테이블 구조 수정:
tdel_idx 컬럼을 AUTO_INCREMENT로 변경하고 PRIMARY KEY로 설정

ALTER TABLE `tok_delete_keyword`
MODIFY COLUMN `tdel_idx` INT(10) NOT NULL AUTO_INCREMENT,
ADD PRIMARY KEY (`tdel_idx`);


중간에 누락된 번호가 있다면 AUTO_INCREMENT 값을 재설정:
기존의 데이터에 누락된 번호(예: 1, 2, 4, 5와 같이 3이 누락된 경우)가 있다면, AUTO_INCREMENT 값을 재설정하여 새로운 레코드 추가 시 연속된 값으로 할당되게 할 수 있다.

ALTER TABLE `tok_delete_keyword` AUTO_INCREMENT = [최대값 + 1];



여기서 [최대값 + 1]은 현재 tdel_idx의 최대값에서 1을 더한 값이다. 만약 최대값이 100이라면 AUTO_INCREMENT = 101과 같이 설정한다.

그런 다음, 새로운 데이터를 추가할 때마다 tdel_idx 값은 자동으로 증가된다.


기존의 tdel_idx 값을 재정렬하려면 다음과 같은 절차를 따르면 됩니다:

임시 테이블 생성:
현재 테이블의 데이터를 보관하기 위해 임시 테이블을 생성합니다.
sql
Copy code
CREATE TABLE `tok_delete_keyword_temp` LIKE `tok_delete_keyword`;
INSERT INTO `tok_delete_keyword_temp` SELECT * FROM `tok_delete_keyword`;
원래 테이블 삭제:
기존의 테이블을 삭제합니다.
sql
Copy code
DROP TABLE `tok_delete_keyword`;
새로운 테이블 생성:
tdel_idx를 AUTO_INCREMENT로 설정하여 새 테이블을 생성합니다.
sql
Copy code
CREATE TABLE `tok_delete_keyword` (
  `tdel_idx` int(10) NOT NULL AUTO_INCREMENT COMMENT '삭제키워드 번호',
  `tpl_idx` int(10) DEFAULT NULL COMMENT '프로젝트번호(공용일 경우 null)',
  `tdel_name` varchar(50) DEFAULT NULL COMMENT '삭제키워드명',
  `tdel_condition` varchar(4) DEFAULT NULL COMMENT '삭제조건(제목+본문:TC,제목:T,본문:C,작성자:W,URL:U)',
  `tdel_pl_apply_chk` varchar(4) DEFAULT NULL COMMENT '프로젝트적용여부(C:공용,P:프로젝트)',
  `tdel_state_code` varchar(4) DEFAULT NULL COMMENT '사용여부(0101:사용,0102:종료/중지)',
  PRIMARY KEY (`tdel_idx`),
  KEY `idx_tdel_tpl_state` (`tpl_idx`,`tdel_state_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='삭제 키워';
데이터 이동:
임시 테이블에서 새 테이블로 데이터를 옮깁니다. tdel_idx는 자동으로 증가되어 할당됩니다.
sql
Copy code
INSERT INTO `tok_delete_keyword` (`tpl_idx`, `tdel_name`, `tdel_condition`, `tdel_pl_apply_chk`, `tdel_state_code`)
SELECT `tpl_idx`, `tdel_name`, `tdel_condition`, `tdel_pl_apply_chk`, `tdel_state_code` FROM `tok_delete_keyword_temp`;
임시 테이블 삭제:
더 이상 임시 테이블이 필요하지 않으므로 삭제합니다.
sql
Copy code
DROP TABLE `tok_delete_keyword_temp`;
이제 tdel_idx는 연속된 AUTO_INCREMENT 값으로 재정렬되었습니다.

 

use DB_NAME
CREATE TABLE `DB_NAME_delete_keyword_temp` LIKE `DB_NAME_delete_keyword`;
INSERT INTO `DB_NAME_delete_keyword_temp` SELECT * FROM `DB_NAME_delete_keyword`;
SELECT * from `DB_NAME_delete_keyword`;
SELECT * from `DB_NAME_delete_keyword_temp`;

DROP TABLE `DB_NAME_delete_keyword`;


CREATE TABLE `DB_NAME_delete_keyword` (
  `del_idx` int(10) NOT NULL AUTO_INCREMENT COMMENT '삭제키워드 번호',
  `idx` int(10) DEFAULT NULL COMMENT '프로젝트번호(공용일 경우 null)',
  `del_name` varchar(50) DEFAULT NULL COMMENT '삭제키워드명',
  `del_condition` varchar(4) DEFAULT NULL COMMENT '삭제조건',
  `del_pl_apply_chk` varchar(4) DEFAULT NULL COMMENT '적용여부(C:공용,P:프로젝트)',
  `del_state_code` varchar(4) DEFAULT NULL COMMENT '사용여부(0101:사용,0102:종료/중지)',
  PRIMARY KEY (`del_idx`),
  KEY `idx_del_tpl_state` (`idx`,`del_state_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='삭제 키워드';


INSERT INTO `DB_NAME_delete_keyword` (`idx`, `del_name`, `del_condition`, `del_pl_apply_chk`, `del_state_code`)
SELECT `idx`, `del_name`, `del_condition`, `del_pl_apply_chk`, `del_state_code` FROM `DB_NAME_delete_keyword_temp`;


DROP TABLE `DB_NAME_delete_keyword_temp`;

'Development > MySql' 카테고리의 다른 글

[MariaDB] 비트 함수 및 연산자  (1) 2024.08.27
[MySQL] MySQL server has gone away  (0) 2023.08.11
[MySQL] sql_mode=only_full_group_by 에러 해결 방법  (0) 2023.08.11
[MongoDB] MongoDB를 MySQL으로 마이그레이션 하기  (0) 2023.08.07
[MySQL] 테이블 깨졌을 때 복구하기  (0) 2023.08.04
'Development/MySql' 카테고리의 다른 글
  • [MariaDB] 비트 함수 및 연산자
  • [MySQL] MySQL server has gone away
  • [MySQL] sql_mode=only_full_group_by 에러 해결 방법
  • [MongoDB] MongoDB를 MySQL으로 마이그레이션 하기
곽진돔
곽진돔
Developer
  • 곽진돔
    echo "곽박한 세상";
    곽진돔
  • 전체
    오늘
    어제
    • 분류 전체보기 (184)
      • Development (57)
        • Linux (13)
        • k8s (3)
        • Docker (5)
        • AWS (1)
        • PHP (35)
        • Python (21)
        • Java (1)
        • SpringBoot (4)
        • JavaScript (1)
        • React (8)
        • MySql (19)
        • MongoDB (1)
      • Daily (4)
      • Study (6)
        • TIL (1)
        • license (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 글쓰기
    • 설정
  • 링크

    • github
  • 공지사항

  • 인기 글

  • 태그

    JavaScript
    Linux
    CentOS7
    리액트
    인코딩
    date
    CentOS
    php
    react
    크롤링
    HTML
    SQL
    UTF8
    리눅스
    Java
    MySQL
    스프링부트
    Selenium
    Shell
    db
    Python
    윈도우
    chromedriver
    IP
    springboot
    nodejs
    error
    정규표현식
    docker
    ssh
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
곽진돔
[MySQL] 생성된 컬럼에 auto_increment 속성 부여하기
상단으로

티스토리툴바