2010-02-25 3 views
7

나는 내가 할 수있는이 간단한 예제를 삽입하지 않습니다하지 작업 얻을 것으로 보인다. 존재하지 않는 경우오라클 병합

는하지만, 그것은 삽입되지 않습니다

Affected rows: 0 
Time: 0.003ms 

내가 잘못 뭐하는 거지에 대한 어떤 단서? 나를 위해

+0

어떤 도구를 당신이이 "영향을받는 행 : 0 시간 : 0.003ms"를 응답 사용하고 있습니까? –

+0

OP가 한 세션에서 커밋하지 않고 병합하고 다른 세션에서 쿼리하는 것은 아닌지 궁금합니다. 또는 기존 응용 프로그램이 SQL % ROWCOUNT의 아날로그 출력을 올바르게 해석하는지 여부. –

+0

테이블'mytable'은 유효한 삽입을하기 위해서'id'와'name' 이상을 필요로합니까? –

답변

8

작품 :

SQL> create table mytable (id varchar(3), name varchar(30)); 

Table created. 

SQL> MERGE INTO mytable mt 
    2 USING dual 
    3 ON (mt.id = 'AAA') 
    4 WHEN MATCHED THEN 
    5  UPDATE SET mt.name = 'updated' 
    6 WHEN NOT MATCHED THEN 
    7  INSERT (mt.id , mt.name) 
    8  VALUES ('AAA', 'Gooood'); 

1 row merged. 

SQL> select * from mytable; 

ID NAME 
--- ------------------------------ 
AAA Gooood 
+0

나도 10.2.0.4에 있습니다. – DCookie

+0

Oracle 9.2를 사용합니다 ... Oracle의 MERGE 함수가 "더 좋습니다"라고 들었습니다. - / – Jalil