이런경우 머지 로 가능할지 궁금합니다
tableA데이터 (id 와 no 와 goodsId가 pk 입니다)
id no goodsId ....
1 mxx 0001
1 mxx 0002
1 x 0001
1 x 0002
update tableA set
no = 'mxx'
where id = '1'
and no = 'x'
이렇게 업데이트 하면 당연히
키 중복 에러가 납니다
이 구문을 머지 로 할수 있을까요
뭐 한개씩 꺼내면서 루프 돌리면 당연히 되겠지만 좀더 좋은 방법이 있을거 같아서요
예를들어 머지문처럼...
해당키가 검색되면
1 x 0001
1 x 0002
위 두데이터는 삭제하고 검색한되면
update tableA set
no = 'mxx'
where id = '1'
and no = 'x'
구문을 실행 하여.. 업데이트를 수행하고 싶은데...
머지문으로 이런경우도 가능할까요? (해보고 있는데 잘안되네요 ㅠㅠ)
조언 부탁드립니다.
CREATE TABLE test6 AS SELECT 1 id, 'mxx' no, '0001' goodsId, 1 c1, 2 c2 FROM dual UNION ALL SELECT 1, 'mxx', '0002', 2, 3 FROM dual UNION ALL SELECT 1, 'x' , '0001', 3, 4 FROM dual UNION ALL SELECT 1, 'x' , '0002', 4, 5 FROM dual UNION ALL SELECT 1, 'z' , '0001', 5, 6 FROM dual UNION ALL SELECT 1, 'z' , '0002', 6, 7 FROM dual ; ALTER TABLE test6 ADD CONSTRAINT pk_test6 PRIMARY KEY(id, no, goodsid); SELECT * FROM test6; MERGE INTO (SELECT id, no, goodsid FROM test6 WHERE id = 1 AND no IN ('x', 'mxx') ) a USING (SELECT id, no, goodsid FROM test6 WHERE id = 1 AND no = 'x' ) b ON (a.id = b.id AND a.goodsid = b.goodsid) WHEN MATCHED THEN UPDATE SET a.no = DECODE(a.no, 'x', 'mxx', 'del') DELETE WHERE no = 'del' ;