Я пытаюсь обновить, если существует, или вставить, если не существует в той же таблице в DB2 (v 9.7).
У меня есть одна таблица "V_OPORNA C" (схема SQLDBA), которая содержит три столбца с двумя первичными ключами: IDESTE (PK), IDEPOZ (PK), OPONAR
Мой случай , если данные (OPONAR), где IDESTE = 123456 AND IDEPOZ = 0 не выходят, вставьте новую строку, если выход - обновите (OPONAR). Я попытался это:
MERGE INTO SQLDBA.V_OPONAROC AS O1
USING (SELECT IDESTE, IDEPOZ, OPONAR FROM SQLDBA.V_OPONAROC WHERE IDESTE = 123456 AND IDEPOZ = 0) AS O2
ON (O1.IDESTE = O2.IDESTE)
WHEN MATCHED THEN
UPDATE SET
OPONAR = 'test text'
WHEN NOT MATCHED THEN
INSERT
(IDESTE, IDEPOZ, OPONAR)
VALUES (123456, 0, 'test new text')
При выполнении кода выше я получаю сообщение об ошибке:
Query 1 of 1, Rows read: 0, Elapsed time (seconds) - Total: 0,013, SQL query: 0,013, Reading results: 0
Query 1 of 1, Rows read: 3, Elapsed time (seconds) - Total: 0,002, SQL query: 0,001, Reading results: 0,001
Warning: DB2 SQL Warning: SQLCODE=100, SQLSTATE=02000, SQLERRMC=null, DRIVER=4.21.29
SQLState: 02000
ErrorCode: 100