pk 설정된 컬럼 update 0 7 2,184

by 성이 [2014.10.07 10:58:38]


테이블에 pk가 설정되어있는 컬럼을 업데이트 하려하는데요

UPDATE TABLE
SET REQ = '00000'
WHERE LENGTH(REQ) <= 14 

이런식으로 REQ컬럼에 길이가 14보다 작거나 같은거의 컬럼에  00000 이라고 넣을려고 하는데

REQ컬럼에 PK가 지정되어있어서 제약조건 에러가 나는데요

그냥 해당 행을 삭제해도 되긴 하지만 컬럼 하나 때문에 전체 정보를 삭제하는게 좀 아까워서 임시로 다른 문자열을

넣을라구 합니다.

뭔가 방법이 있을꺼 같긴한데 떠오르질 않네요;;

by 아발란체 [2014.10.07 11:22:26]
UPDATE TABLE SET REQ = '00000_'||REQ WHERE LENGTH(REQ) <= 14
--이후 수정 하실 때 REQ가 00000으로 시작하는 것을 LIKE 검색 이용하시면 됩니다.

 


by 아발란체 [2014.10.07 11:25:10]

REQ가 숫자 컬럼이라면 위 구문 실행하면 _ 값이 들어가 오류가 발생하는데 이럴 경우

"REQ = REQ * -1"로 업데이트 하는 것도 될 것 같습니다.


by 성이 [2014.10.07 11:38:29]

답변 감사드립니다 ^^

근데 제가 질문을 잘못 썼나보군요.. ㅠㅠ

음 작성해주신 쿼리는 작동 잘되는데 기존 문자에 붙이는 방식이네요

기존에 들어있는 문자열을 없애고 공백이던 다른 문자열로 넣어야 하거든요


by 아발란체 [2014.10.07 11:53:01]

임시로 다른 문자열 넣는다면 그 방법이 제일 좋습니다.

기존에 값을 삭제한다고 해도 고유키 제약 조건 위배 오류가 나지 않기 위해 임시 값을 넣을 때 계속 값이 충돌나지 않은 값을 생성해서 넣어줘야 합니다.

즉 기존 값을 이용만 하는 것이지 값 자체가 재탄생하는 것인데 기존 값이라고 보기 힘든 것이 아닌가 합니다. 아니면 출동나지 않도록 시퀸스 값을 이용해야 하는데 결국 비용만 높아지고 결과는 같습니다.

또한 임시값을 식별할 수 있는 값이 같이 들어가기 때문에 다른 어떤 방법을 찾아도 컬럼을 추가하지 않는 이상 관리 목적상 동일한 결과입니다.


by 성이 [2014.10.07 12:00:03]

답변 감사드립니다 

이래저래 생각을 많이 해봐야겠네요 으윽~


by 백면서생 [2014.10.07 11:51:51]

req = -rownum


by 성이 [2014.10.07 12:00:34]

오호~ 이런 방법도 있군요~

답변 감사드립니다 

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