2016-06-14 4 views
1

이 문제는 쉽게 해결할 수있을 것이라고 생각했지만 문제가 있습니다. 자동 증분 ID가있는 테이블에 레코드를 삽입합니다. 중복 키 업데이트시 자동 증가 ID를 동일하게 유지 (업데이트하지 않음)하고 싶습니다. 내가 원하는 내 고유 키가 (과일, 컬러)이기 때문에중복 키 업데이트시 자동 증가 ID가 업데이트되지 않게하려면 어떻게합니까?

INSERT INTO table (Fruit, Color) VALUES(
    Apple, Red) 

(또한 ID는 별도의 하나입니다) : 나는 다음 실행

+-------------+-----------+------+ 
| ID   | Fruit  | Color| 
+-------------+-----------+------+ 
| 1   | Apple  | Red | 
| 2   | Apple  | Green| 
+-------------+-----------+------+ 

예를 들어, 나는 다음과 같은 테이블이 있다고 가정 해 보자 내 테이블이 업데이트 될 때 ID 열은 그대로 (ID = 1) 유지됩니다. 그러나 위의 값을 삽입하면 ID가 자동으로 3 씩 증가합니다.

누군가 업데이트시 ID 값이 증가하지 않도록 ON DUPLICATE KEY UPDATE 문을 제공 할 수 있습니까?

INSERT INTO table (Fruit, Color) VALUES(
    Apple, Red) 
ON DUPLICATE KEY UPDATE (
{statement here}) 
+0

MySQL은 삽입 할 값을 어떻게 알 수 있습니까? 또한, 방아쇠가 여기에있을 가능성은 없다고 생각합니다. –

답변

1

ID 열에 다음 설정 기본 키를해야합니다 (과일, 컬러) 고유 한 키로 그런 다음 아래 @Andrew B Anthony가 제공하는 쿼리를 실행할 수 있습니다.

INSERT INTO table (Fruit, Color) VALUES 
    Apple, Red) 
ON DUPLICATE KEY UPDATE 
Fruit=values(Fruit), 
Color=values (Color) 
1

당신은 아래의 쿼리를 사용하고 (과일, 컬러) 인 경우 작동하는 고유 키

INSERT INTO table (Fruit, Color) VALUES(Apple, Red) 
ON DUPLICATE KEY UPDATE 
Fruit=values(Fruit),Color=values (Color) 
+0

닫기. ID는 기본 키 여야하며 (과일, 색상) 고유 키 – ProgrammingWithRandy

+0

@ 프로그래밍 방식 필수 (과일, 색상)이 고유 키인 경우 작동합니다 –

관련 문제