안녕하세요 JAVA 개발자 입니다.
이해가 좀 안되는 부분이 있어 문의드립니다 ㅜㅜ
USING 절에 데이터 다른테이블 정보를 조회하여 ON절에 사용 하였는데
No rows returned. 가 되었을때는 insert 로직을 타질 않습니다.
하지만 DUAL 로 테스트 하면 정상 insert로직을 수행합니다. 두개의 차이가 있을까요?..
혹시 No rows returned. 가 되었을때 insert로직을 수행할수 있게 하는 방법이 있을까요?
| SQL#1 | SQL#2 |
| MERGE INTO 테이블명 T USING ( SELECT B.SUBSR_PRDC_SEQ_NO FROM 테이블명 B WHERE 1=2 ) S ON ( T.SUBSR_PRDC_SEQ_NO = 2 ) WHEN MATCHED THEN UPDATE SET UPDT_USER_ID = 'AGENT' WHEN NOT MATCHED THEN INSERT ( SUBSR_PRDC_SEQ_NO ) VALUES ( 012457845 ); |
MERGE INTO 테이블명 T FROM DUAL WHERE 1=2 |
USING 을 가지고 머지를 합니다.
USING 에 자료가 없으면 머지할게 없지요.
그리고 올려주신 SQL 은 두개 다 구문이 적절하지 않습니다.(편집 오류일 듯)
기존에 정보가 있으면 update하고 없으면 insert 한다 의 생각이었는데
다른테이블과 조인하여 기존의 정보를 확인해야하는 상황입니다.
이렇게 되면 USING에 데이터가 없어서 ON절에 값이 NULL이 들어가는게 아니라 아예 수행 자체를 안해버리는 것이군요
감사합니다.