2017-03-17 8 views
0

그러나 수행 할 삽입/업데이트에 메타 값을 저장하는 테이블이 있습니다 - 고유 키가 없습니다 기둥의 조합). 포스트의MySQL - 일부 열 값이 다른 경우 행을 업데이트하십시오. (중복되지 않는 키)

1 열 저장 ID는 1가 varchar 메타 값 키와 1 메타 값 ...

이제 일이다 쉽게 중복 행을 포함하는 테이블 CAN을이 보유 일어날 수 :

id_post | key | value 
    5  'bobber'  4 
    3  'locer'  2 
    5  'bobber'  4 

지금 제가하고 싶은 것은 키 갱신을 삽입의 변화을하거나 복제하는 것입니다, 문제는, 내가 업데이트를 트리거 할 키가 없습니다.

key 값이 이미 표에 존재하는 경우 해당 value 열을 업데이트하고 싶습니다. 그렇지 않은 경우 새로운 행을 삽입하려고합니다.

키 제한 조건을 추가하는 것으로 끝났습니다. 할 수 없습니다.
또한 이 아니며은 저장 프로 시저/함수를 만들려고합니다.

도움이 필요하십니까? 감사드립니다 :-)

당신이 id_post

ALTER 표 테이블 이름이 PRIMARY KEY (id_post)를 추가로 기본 또는 고유 키로 행을 업데이트 할 수

+1

SQL에서는이 작업을 수행 할 수 없습니다. 먼저 'SELECT'를 수행 한 다음, 찾은 항목에 따라 'UPDATE'또는 'INSERT'할 수있는 프로그래밍 언어가 필요합니다. – Barmar

+1

당신의 욕망은 말이되지 않습니다. 키가 존재할 때'update'를 원한다면, 적어도 새로운 데이터가 테이블에 들어갈 때, 키를 유일하게하기를 원한다고 말하고있는 것입니다. –

+0

@GordonLinoff 더 넓은 관점에서 볼 때, KEY가 있으면 COLUMN VALUE가 있으면 업데이트하고 싶지 않다는 것이 문제입니다. 어쨌든 중복 된 값을 사용하지 않는다고해서 다른 사람이 사용하지 않는다는 것을 의미하지는 않습니다 ... 일부 시스템은 저장하지 않는 방식으로 설계되었습니다. 배열을 1 개의 직렬화 된 값으로 지정하지만 ~ 배열 값은 행으로 DB에 변환됩니다. 나는 당신이 그것을 알기를 바랍니다 :) –

답변

-1

;

+0

왜이 테이블에 대한 기본 키와 다른 테이블에 대한 외래 키를 사용 하시겠습니까? – fubar

+0

하나의 소식은 더 많은 쌍을 가질 수 있으며 더 많은 동일한 키 - 값 쌍을 가질 수 있습니다. –