은 내가 하나에 여러 태그를 삽입 할방지 자동 증가 건너에 중복 키 업데이트
(ID INT auto_incrment primary key,
tag VARCHAR unique)
있는 테이블을 가지고있다. 이와 같이 :
INSERT INTO tags (tag) VALUES ("java"), ("php"), ("phyton");
나는 이것을 실행하고 "java"가 이미 테이블에 있으면 오류가 발생합니다. 그것은 "php"와 "phyton"을 추가하지 않습니다.
나는 이런 식으로 할 경우
INSERT INTO tags (tag) VALUES ("java"), ("php"), ("phyton")
ON DUPLICATE KEY UPDATE tag = VALUES(tag)
가 오류없이 추가됩니다하지만 ID 필드에서이 개 값을 건너 뜁니다.
예 : 자바가 ID = 1
인데 쿼리를 실행합니다. 그렇다면 PHP는 3과 Phyton 4가 될 것입니다. ID를 건너 뛰지 않고이 쿼리를 실행할 수있는 방법이 있습니까?
나는 그들 사이에 큰 공백을 원하지 않습니다. 나는 또한 INSERT IGNORE
을 시도했다.
감사합니다.
당신이주의를 NTO해야하지만 연속 값에 대한 그 정도, 경우 그 동작을 변경하고 싶다면, 설정 파일에'innodb_autoinc_lock_mode = 0'을 설정할 수 있습니다. [Auto Increment Skipping numbers?] (https://stackoverflow.com/q/17798835/6248528) 잠재적 인 부작용 (및 어떤 경우에 해당되는지)을 알고 있으므로 그 대답의 매뉴얼 링크를 읽으십시오. 서버 구성을 변경할 수있는 권한이 있어야합니다. 그렇지 않으면 삽입 할 때 다음 번호를 수동으로 계산할 수 있으므로 (자동 증가 기능을 사용할 수 없으므로) 간격을 걱정하지 마십시오. – Solarflare