Merge문 (같은테이블 update되는데 insert안됨) 0 2 6,177

by 옹네 [2008.12.31 17:02:36]


아주 간단한 쿼리 같은데 안되네요...

검색해보니 똑같은 질문이 있는데, 답변을 읽어도 이해가 안되요. ㅠㅠ

아래 쿼리를 해보면 업뎃은 아주 잘되는데,

insert 가 안되요... insert 부분... 만 따로 발췌해서 into table명 넣고 하면 잘되는 쿼리예요.

using에 사용한놈은 acdm_commd 테이블의 pk는 다 걸은거여요. pk가 두개

그래서 그에 해당하는 놈이 없으면 insert 하려는데... 왜 안돼는지...

같은 테블 머지는 안되는건가요???

 

 

MERGE INTO ACDM_COMMD A                                                                                                               
     USING (SELECT I_CMMN, I_CMMN_GRP FROM ACDM_COMMD B WHERE B.I_CMMN_GRP = '081' AND B.I_CMMN = '0810'||'60' ) B                           
     ON (A.I_CMMN_GRP = B.I_CMMN_GRP                                                                                                   
         AND A.I_CMMN = B.I_CMMN  )                                                                                                       
 WHEN MATCHED THEN                                                                                                                       
     UPDATE SET A.I_ETC_CHR1 = '중부납부'                                                                                                       
               ,A.Y_USE_YN = 'Y'                                                                                                           
 WHEN NOT MATCHED THEN                                                                                                                   
     INSERT   (I_CMMN, I_CMMN_GRP, N_CMMN, I_ETC_CHR1, Y_USE_YN, O_WORK_PSN, I_WORK_GBN, D_WORK_T)                                   
     VALUES ('0810'||'60', '081',    '중부수도사업소',       '중부납부', 'Y',        '1111111111112',          '002001',   '20081212121212')   

by 옹네 [2008.12.31 17:10:49]
앗.해결했어요.ㅠㅠ(다시검색해보니 훌륭한 답변을 찾았어요..^^)

USING (SELECT I_CMMN, I_CMMN_GRP FROM ACDM_COMMD B WHERE B.I_CMMN_GRP = '081' AND B.I_CMMN = '0810'||'60' ) B
요것을
USING (SELECT '0810'||'60' I_CMMN, '081' I_CMMN_GRP FROM DUAL ) B
이렇게 바꾸니까 되네요.

그런데 왜!!!! 위에꺼로 하면 안될까요???

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