Ошибка при использовании команды MERGE в DB2 - PullRequest
0 голосов
/ 30 апреля 2019

Я пытаюсь обновить или вставить данные в таблицу с помощью команды MERGE в DB2 v11.Однако я продолжаю получать сообщение об ошибке:

SQL0723N Ошибка в запущенном операторе SQL в триггере "TRACE_AFTE".
Информация, возвращаемая для ошибки, включает SQLCODE "-746", SQLSTATE "57053"и токены сообщения "CUSTOM_AFTER_UPDAT | SP_CUSTOM_AFTER_U".SQLSTATE = 09000 "

Я посмотрел на ошибку, и она сказала, что подпрограмма конфликтует с использованием таблицы .. что таблица уже используется.

Я имеюпопытался изменить запрос на обновление на основе VALUES вместо таблицы, но получил ошибку по неожиданному токену

SQL0104N Неожиданный токен "INSERT" был найден после "MATCHED THEN". Ожидаемые токены могут включать: "". SQLSTATE = 42601 "

MERGE INTO TRACE target 
USING IMPORT_RAW source
     ON target.DETAIL_NUMBER = source.DETAIL_LINE_ID
          AND target.DESC = source.TRACE_TYPE
WHEN MATCHED THEN
   UPDATE SET NUMBER = source.PRO

С VALUES

MERGE TRACE AS T
USING IMPORT_RAW AS S
      ON (T.DETAIL_NUMBER= S.DETAIL_LINE_ID) AND T.DESC = S.TRACE_TYPE
WHEN NOT MATCHED BY TARGET     
THEN INSERT(DETAIL_NUMBER, TRACE_NUMBER) VALUES(S.DETAIL_LINE_ID, S.CARRIER_PRO)
WHEN MATCHED 
     THEN UPDATE SET T.NUMBER= S.PRO;

Запрос должен обновить несколько записей из таблицы Import_raw, в которой эта запись существует, иимпортировать, где это не так.

Что я делаю не так?

1 Ответ

0 голосов
/ 20 мая 2019

Спасибо за помощь.Кажется, проблема была в том, что он пытался объединить одну и ту же запись дважды.Моя усеченная таблица была закомментирована.

...