sql insert into 중복 데이터 처리 질문 드립니다!

sql insert into 중복 데이터 처리 질문 드립니다!

QA

sql insert into 중복 데이터 처리 질문 드립니다!

답변 1

본문

고수님들 오늘도 도움감사합니다!

 

질문은

mysql table에

table_num 을 primary key int 11 AUTO_INCREMENT 줘서 테이블 넘버를 증가시키고

 

insert into table (table_num,mb_id) values ('{$table_num}','{$mb_id}');

이렇게 처리를 하면 처음 데이터는 정상 등록됩니다.

 

그런데 두번째 데이터는 아이디가 같은 사람이 버튼을 누르면 mb_id 데이터값이 중복값이어서 등록이안되는데 이걸 primary를 성정한 상태에서 중복값 삽입이 가능하게 할수있을까요?

이 질문에 댓글 쓰기 :

답변 1

MySQL 테이블에서 table_num을 AUTO_INCREMENT로 PRIMARY KEY로 설정했을 때,

중복되는 mb_id 값 때문에 추가 등록이 안 되는 문제는,

실제로는 다른 컬럼(여기서는 mb_id)이 고유키(UNIQUE)로 설정된 경우에 발생하는 것입니다.

따라서 중복을 허용하려면 mb_id 컬럼의 UNIQUE 제약 조건을 제거하거나,

애초에 PRIMARY KEY를 table_num에만 유지하고 mb_id를 일반 INDEX

또는 제약 조건이 없는 일반 컬럼으로 설정해야 합니다.

 

1. 테이블 스키마 확인 및 수정

-- 현재 테이블 스키마 확인
SHOW CREATE TABLE table;

-- mb_id에 UNIQUE 또는 PRIMARY 제약이 있는 경우 제거
ALTER TABLE table DROP INDEX mb_id;

-- table_num에만 PRIMARY KEY와 AUTO_INCREMENT 유지
ALTER TABLE table MODIFY table_num INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY;
 

2. 수정된 구조로 데이터 삽입

INSERT INTO table (mb_id) VALUES ('{$mb_id}');

 

붙임) 

table_num은 AUTO_INCREMENT로 자동 처리되므로

삽입 시 명시적으로 값을 넣지 않아야 합니다. 

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 197
© SIRSOFT
현재 페이지 제일 처음으로