on duplicate key update 에 대해서..
- ?
-
?
안녕하세요.
문의하신 DUPLICATE KEY UPDATE 사용은 CUBRID2008R3.0부터 가능하며 http://www.cubrid.com/zbxe/70586 FAQ를 참조세요.
-
?
3.0부터 지원되는거 알고 있구요.
INSERT INTO a_tbl VALUES(1, 'aaa', '222-2222') ON DUPLICATE KEY UPDATE phone = '222-2222';
이렇게 update구문에 그냥 상수로 저렇게 넣으면 들어가는것도 알고 있습니다.
그렇지만.. 제가 질문한 내용을 보시면, insert 를 select구문으로 했을때, select 데이터중에서, pk랑 비교해서 없는건 insert , pk랑 비교해서 값이 있는건 update를 하고 싶습니다..
그런데, 위의 질문과 같이 하면 a.[alias] 가 정의되어 있지 않다고 나옵니다...
-
?
아래처럼 REPLACE를 써서 구현할 수 있을 듯 싶습니다.replace into pjs (id, [name])select a.hostname, a.[alias] from ivu_t_ast_hwsvr a;
-
?
replace를 사용하면 update시.. 명시하지 않는 컬럼에 대해서는 모두 null로 대체되더라구요.. 전 기존의 데이터는 그대로 있고, 명시한 컬럼에 대해서만 update를 하고 싶습니다.
-
?
네. replace 문은 기존 레코드를 삭제하고 새로 입력하기 때문에 replace 문에서 언급하지 않는다면 default value로 채우게 됩니다.
따라서 NULL이 들어가게 된 것이구요.
지금 개발 중인 merge 문을 사용하면 가능해질 것 같은데,
현재 버전에서 쿼리 하나로 해결한다면 그래도 replace 밖에 없어 보입니다. 아니면 로직으로 풀어서 써야 할 것 같구요.
번거롭지만 아래처럼 나머지 컬럼들의 값을 뽑는 subquery를 써서 채워주는 방법을 쓰면 될 것 같습니다.
replace into pjs (id, [name], c)
select a.hostname, a.[name] , (select c from pjs where id = a.hostname) from ivu_t_ast_hwsvr a;
-
?
그렇군요. 빨리 merge 도 개발이 되었으면 좋겠습니다. 감사합니다.
-
CUBRID 사용자를 위한 DBeaver 도구 출시 안내
-
SQLGate for CUBRID 영구 무료 라이선스 제공
-
말도 안되는 Exception이 발생하는데 대체 뭘까요;;
-
이거... 뭐가 문제 일까요?
-
전에 조인 관련 비슷한 질문을 올렸는데도 응용을 하지 못해 쿼리를 올립니다.
-
큐브리드 매니저, 쿼리브라우저 차이점 문의
-
php 모듈 로드가 안됩니다.
-
데이타 처리 속도 문제가 있습니다.
-
4.0 최초 설치후 DB 구동 불가 증상
-
4.0 마이그레이션 중 스키마 로드 오류
-
실행 오류 :-46 (Internal error: slot 3 on page 4231 of volume)
-
증분백업 복구가 잘 않되고 있습니다.
-
리눅스서버에 설치된 cubrid삭제후 로그인할때마다 에러메시지가 나옵니다.(11/06=>관련 추가질문 올림)
-
1대의 서버에 버젼이 다른 cubrid를 설치하려고 합니다.
-
델파이 ADOStoredProcedure 컴포넌트에서 큐브리드저장함수의 리턴값을 받고싶습니다.
-
Stored procedure execute error: 자바 저장프로시저 관련오류입니다.
-
실시간 Insert처리
-
큐브리드 버전 선택 문의
-
페이징과 전체 카운트 쿼리 가져올 수 있도록 해주세요.ㅠㅠ
-
질의자동화 관련하여 문의드립니다.
-
질의 자동화 실행 오류
-
on duplicate key update 에 대해서..
안녕하세요.
큐브리드를 사용해 주셔서 감사합니다. 문의하신 내용에 대하여 답변을 준비중이오니, 조금만 기다려 주시면 감사하겠습니다.