제목 | db 쿼리 문제 | ||
---|---|---|---|
글쓴이 | 템포 | 작성시각 | 2012/09/13 15:25:16 |
|
|||
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로 같이 조건을 걸면 문제가 안되겠죠. ^^ 그래서 위에 편번(?)을 말씀 드린거구요. |