Я пытаюсь вставить некоторые записи в свою таблицу и ничего не делать, когда запись уже существует.Мой первичный ключ состоит из нескольких столбцов (event_timestamp, device_id, path, message_id).
Когда я пытаюсь выполнить что-то вроде следующего утверждения в JDBC:
MERGE INTO events dest
USING ( SELECT event_timestamp, device_id, path, message_id from events) src
ON (dest.event_timestamp = src.event_timestamp
and dest.device_id = src.device_id
and dest.path = src.path
and dest.message_id = src.message_id)
WHEN NOT MATCHED THEN
INSERT (event_timestamp, device_id, path, message_id, text, direction, speed, net, gross)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
Ничего не вставляется.
С нормальным оператором вроде:
INSERT (event_timestamp, device_id, path, message_id, text, direction, speed, net, gross) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
все вставляется без проблем.
Я также попытался изменить оператор выбора для выбора из DUAL
вместо таких событий, как:
MERGE INTO events dest
"USING ( SELECT event_timestamp, device_id, path, message_id from DUAL) src
ON (dest.event_timestamp = src.event_timestamp
and dest.device_id = src.device_id
and dest.path = src.path
and dest.message_id = src.message_id)
WHEN NOT MATCHED THEN
INSERT (event_timestamp, device_id, path, message_id, text, direction, speed, net, gross)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
Но тогда я получаю исключение: ORA-00904: invalid identifier
Что я могу сделать, чтобы это работало?