Я пытаюсь обновить или вставить данные в таблицу с помощью команды 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
, в которой эта запись существует, иимпортировать, где это не так.
Что я делаю не так?