업데이트중 궁금한점.. 0 6 1,180

by 손님 [DB 기타] 업데이트 키값 [2013.06.04 12:07:21]


마이플랫폼을 사용하고있는데...

업데이트 구문중 키값을 서로 교환하는식의 업데이트를 실행해보았는데 역시나 무결성제약조건에 걸려버립니다...

ex)학생번호(primary key) 학생이름
a1   홍길동
a2   홍길순

이렇게 테이블이 있다면

홍길동의 번호를 a2로 홍길순의 번호를 a1으로 업데이트하려고하는데 쿼리한번에 수정할 수 있는 방법이 없을까요?

기존에는 a2 홍길순
  a1 홍길동으로 데이터셋을 만들어놓고 기존에 테이블 내용을 삭제하고 다시 넣는식으로 했는데... 데이터양이 많아지면

속도에 영향이 많이 갈것같아서 다른방법을 구해보려고합니다. 긴 내용 읽어주셔서 감사합니다.

by 채용근 [2013.06.04 12:29:59]

하던데로 하시는게 좋을듯


by 우리집아찌 [2013.06.04 12:58:55]

프로시져로 짜면 되것같은데요

임시로 A2 홍길순을 
1.임시 키번호 생성으로 만드시고 UPDATE
2. A1 홍길동을 A2로 UPDATE
3. FF(임시키번호) 홍길순을 다시 A1으로 UPDATE




by 마농 [2013.06.04 14:00:45]
UPDATE t
   SET id = DECODE(id, 'a1', 'a2', 'a1')
 WHERE id IN ('a1', 'a2')
;

by 디케이 [2013.06.04 14:36:54]
merge 를 이용해서 학생번호가 아니라 학생이름을 update 해주면 같지 않을까요?
----------
의문점>
아래와 같이 폼에서 입력하면 결과를 어떻게 예상하는지..
1. a1, 홍길동 -> a2 홍길동
2. a2, 홍길순 -> a3 홍길순

Merge를 이용하면 결과는 다음과 같을 겁니다.
a1 홍길동
a2 홍길동
a3 홍길순

by 꼬랑지 [2013.06.05 09:49:50]

테이블의 pk가 업데이트 되는 상황이라면 주식별자를 잘못 도출한게 아닐까요? 만일 저 테이블이 메인성 테이블이라면 수 많은 하위 테이블들이 fk로 참조하고 있을 건데 이건 어떻게 처리하시는지??? 주식별자 도출이 잘못되었던지 정규화가 제대로 안된 테이블인지 확인해 보세요.

by 손님 [2013.06.10 10:40:35]

많은 답변 감사드립니다. 제가 지금 당장 모르는 용어들도 많이 있지만 한번씩 다 적용해보겠습니다.

다시한번 감사드려요! 즐거운 하루 되세요!
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입