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로 자동 처리되므로
삽입 시 명시적으로 값을 넣지 않아야 합니다.