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

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

QA

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

본문

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

 

질문은

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로 자동 처리되므로

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

답변을 작성하시기 전에 로그인 해주세요.
전체 197
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT