oracle merge 문의 드립니다. 0 7 543

by 개발자 [SQL Query] [2020.11.25 10:27:56]


안녕하세요.
oracle merge 시 on절 데이터를 기준으로 matched, not matched 2종류로 처리를 하는데요.
3가지 경우를 가지고 데이터를 처리하고 싶은데 방법이 있을까요?

1. on절 데이터에 없는 데이터 insert
2. on절 데이터가 변경된 경우 update
3. on절 데이터에 있는데 처리하려는 데이터에 없는 경우 delete

merge문으로 1, 2번 경우는 처리가 되는데 3가지 경우를 merge문으로 처리가 가능한건지 문의 드립니다.

by 랑에1 [2020.11.25 12:02:40]

http://www.gurubee.net/article/79193

예전 마농님 답변 참고하시면 도움 되실 것 같아요.


by 마농 [2020.11.25 12:09:35]

matched 에서
Update 와 함께 Delete 가능합니다.
http://gurubee.net/lecture/2225


by 개발자 [2020.11.25 13:10:45]

우선 답변 감사드립니다.

제가 처리하고자 하는것과는 차이가 있는것 같아서요.

참고 merge문은 삭제 대상을 알고 있는 경우인거 같은데요.

기존 테이블 데이터가 3건이 있다고 하면

no data

1  100

2  200

3  300

수정할 데이터를 가지고 기존 테이블 데이터를 수정하고자 합니다.

no data

1  200

2  200

이런 경우 merge문을 통해 처리가 가능한지 문의 드린 내용입니다.

 


by 마농 [2020.11.25 13:57:13]

기본 문법은 동일합니다.
목적에 따라 실 사용 구문이 달라지는 것일 뿐 기본 문법이 다른 것은 아닙니다.
해당 케이스에 맞게 기본 문법을 지키면서 구문을 작성히시면 됩니다.
(원본), (참조), (결과) 3가지 예를 모두 보여주세요.
위 댓글의 참고 사이트를 보면 (기본문법) 및 (응용처리) 둘다 있습니다.
http://gurubee.net/lecture/2225 <- 기본 문법
http://gurubee.net/article/79193 <- 응용처리
응용처리 부분이 질문자가 원하는 샘플 인 듯 한데요?


by 개발자 [2020.11.25 15:49:06]

응용처리 부분은 이미 테이블에서 제외될 대상이 정해져 있는 경우이고

제가 원하는건 UI에서 받은 데이터를 변수로 DB에서 처리 방법입니다.

MATCHED 경우는 DB에 데이터가 있고 변수 값이 변경된 경우 UPDATE 하면 될 것이고

NOT MATCHED 경우가 DB에 데이터가 없을 경우와 DB 데이터는 있으나 변수값에 데이터가 없을 경우로

DB 데이터가 없는 경우는 INSERT 하고

DB 데이터가 있으나 UI에서 받은 변수값에는 없는 경우 기존 DB 데이터를 DELETE 하고 싶은 것입니다.


by 마농 [2020.11.25 15:58:16]

글세요? 질문이 잘 이해가 안가네요.
UI 부분이 어떤 역할을 하는지?
글로 설명하는 것보다는 자료를 눈으로 보여주시는 게 좋습니다.
인과관계에 맞게 예시자료를 명확하게 제시해 주세요.
(원본데이터) (입력데이터) (결과데이터) 형태의 자료를 케이스별로 제시해 주세요.
- Update Case
- Insert Case
- Delete Case


by 개발자 [2020.11.25 17:07:53]

정리해서 질문을 다시 올리겠습니다.

감사합니다.

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