2016-01-13 3 views
0

Я пытаюсь посмотреть, существует ли существующая «IMPORTID» в таблице, состоящей из двух столбцов: «IMPORTID», «STEP». Если есть, увеличьте столбец STEP записи на 1.Oracle Merge/Insert

Я только что проверил, используя жестко заданные значения, и в настоящее время нет строк в таблице. Я ожидаю, что следующий SQL добавит запись, но ничего не происходит.

MERGE into TOSTEP t 
USING 
    (SELECT 'Test' IMPORTID, 1 STEP FROM TOSTEP) s 
ON 
    (s.IMPORTID = t.IMPORTID) 
WHEN MATCHED THEN 
    update set t.STEP = s.STEP +1 
WHEN NOT MATCHED THEN 
    insert (IMPORTID,STEP) 
    values ('Test',1); 

ответ

3

Вы объединяете пустую таблицу с itself..meaning нет данных, выбранных в using пункте. Изменение (SELECT 'Test' IMPORTID, 1 STEP FROM TOSTEP) s в (SELECT 'Test' IMPORTID, 1 STEP FROM DUAL) s и он должен работать

ПОЛНЫЙ КОД:

MERGE into TOSTEP t 
USING 
    (SELECT 'Test' IMPORTID, 1 STEP FROM DUAL) s 
ON 
    (s.IMPORTID = t.IMPORTID) 
WHEN MATCHED THEN 
    update set t.STEP = s.STEP +1 
WHEN NOT MATCHED THEN 
    insert (IMPORTID,STEP) 
    values (s.IMPORTID, s.STEP); 
Смежные вопросы