7 Stimmen

Oracle MERGE kann nicht INSERT

Ich habe ein einfaches Beispiel, das ich scheinbar nicht zum Laufen bringen kann:

MERGE INTO mytable  mt
USING dual
ON (mt.id = 'AAA' )  
WHEN MATCHED THEN 
    UPDATE SET mt.name = 'updated'
WHEN NOT MATCHED THEN 
    INSERT (mt.id , mt.name )
    VALUES ('AAA', 'Gooood' );

Wenn ein "AAA"-Datensatz in der Tabelle vorhanden ist, wird er erfolgreich aktualisiert.

Aber wenn es nicht existiert, wird es nicht eingefügt:

Affected rows: 0
Time: 0.003ms

Gibt es einen Hinweis darauf, was ich falsch mache?

8voto

Tony Andrews Punkte 125904

Funktioniert bei mir:

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X