개발 Q&A

제목 db 쿼리 문제
글쓴이 템포 작성시각 2012/09/13 15:25:16
댓글 : 9 추천 : 0 스크랩 : 0 조회수 : 18006   RSS
A(PK)         B(PK)             C
10                44                  7
13                44                  8

.. 저런식으로 DB 구성이 되어있는데

저런 상태에서 B로 파라메터 값을 받아서 업데이트를 시켜줄때 문제가 생깁니다

A의 값은 10, 13 둘중에 하나만 들어가게 되는데, 저렇게 B값 44가 A(10) A(13)도 가지게 될 경우
mysql에서 업데이트 자체가 안됩니다 duplicate....라고 뜨면서..

문제는 업데이트시에는 저런 에러가 안뜨고 업데이트가 되어야 하는데
PK가 중복되어 2개가 다 들어가버리니 저런 것 같습니다만, DB구조를 변경하지 않고 해결하는 방법을 찾고 있습니다.

그리고. 업데이트가아닌 Insert를 할 때는 추가로 막게해야 하는 경우인데 어떤 좋은 방법이 있을까요 ??

괜찮은 방법있으면 가르쳐주세요

 다음글 Form 전송 한글 문제 (5)
 이전글 jQuery에서 클릭이벤트 일 때, 정렬 (7)

댓글

한대승(불의회상) / 2012/09/13 15:27:44 / 추천 0
어떤 값을 업데이트 한다는건가요?
템포 / 2012/09/13 15:33:22 / 추천 0

C값을 업데이트 할려고 합니다 . 업데이트시에는요

변종원(웅파) / 2012/09/13 17:22:17 / 추천 0
B 필드 PK면  중복값이 발생하지 않아야 하는건데.... ^^;

무식한 편법은 B=44 에 해당하는 A 10, 13 가져오고 

where 절을 다음과 같이 만들어서

a=10 or a=13 

업데이트 하는 방법이 있습니다.

테스트는 안해봤습니다. ^^;
템포 / 2012/09/13 17:56:07 / 추천 0
답변 감사합니다

A필드와 B필드 모두 PK 입니다

의미는 A와 B를 합쳐 하나의 PK로 보겠단 생각이었습니다

말씀하신 방법은 B 필드 값으로 select할 때 해당하는 A값을 가져와서 업데이트 하는 문구에 10, 13을 조건으로 업데이트 하신단 말씀이신가요??


변종원(웅파) / 2012/09/13 18:44:51 / 추천 0
템포/ 네. 맞습니다. A 10, 13은 유니크 할테니까 문제가 안생기겠죠
한대승(불의회상) / 2012/09/14 09:34:09 / 추천 0
A 와 B가 함께 primary로 지정되어 있고 C 의 값을 업뎃 하는거라면  duplicate 에러가 발생할 일은 없어 보이는데요. ^^
양승현 / 2012/09/17 11:51:54 / 추천 0
음.. pk라면 unique가 기본이라 중복이 되면 안될터인데..

기본키로 사용하는 필드는 보통 mysql의 경우 auto increment 로 사용하지요.
편하기도 하구요. 말씀하신 insert의 경우에도 자동으로 해결이 되니..
아니면 한번 select하여 중복체크를 하시는 수 밖에는..

다시 생각해봐도 pk인데 44값이 두번 들어가는건 이해가 안되네요.
한대승(불의회상) / 2012/09/17 11:54:34 / 추천 0
승현//A 와 B를 합쳐서 pk를 만들기 때문에 상관없을듯..

단 B값에  unique 속성은 지정되지 않아야 겠지요. ^^
변종원(웅파) / 2012/09/17 12:08:54 / 추천 0
지금 문제가 중복되는 B 값을 가지고 검색을 하여 업데이트하려고 해서 생기는 겁니다.

A, B로 같이 조건을 걸면 문제가 안되겠죠. ^^

그래서 위에 편번(?)을 말씀 드린거구요.