Итак, у меня есть пакетный процессор, который является многопоточным, который принимает некоторые значения и вставляет их в Oracle БД. Я получаю сообщения о том, что этот процессор регистрирует Unique Constraint
ошибки.
Это запрос, который процессор использует для вставки:
INSERT INTO TABLE_T
(VALUE_A_PK, VALUE_B_PK, VALUE_C, VALUE_D, VALUE_E, VALUE_F, VALUE_G, VALUE_H, VALUE_I, VALUE_J)
SELECT ?,?,?,?,?,?,?,?,?,? FROM DUAL
WHERE NOT EXISTS
(SELECT 1 FROM TABLE_T WHERE
VALUE_A_PK= ? AND VALUE_B_PK = ?);
Я знаю способы исправить это, но сначала мне нужно воссоздать ошибку, чтобы доказать, что я действительно ее исправил. Несмотря на подачу нескольких повторяющихся записей в процессор, я не могу вручную восстановить ошибку.
Мне почти наверняка кажется, что это проблема многопоточности, когда несколько потоков пытаются вставить новую запись одновременно .
Есть ли надежный способ заставить более одного потока выполняться в одно и то же время? Если бы я мог это сделать, то, похоже, я смог бы восстановить всплывающее окно с ошибкой.