Почему бы не обработать архивирование повторяющихся строк в таблице корзины в отдельном операторе?
Во-первых, сделайте слияние (объединяя дублирующиеся строки, чтобы избежать уникальной ошибки ограничения). Я предположил MAX
агрегатную функцию для столбца col1, но вы можете использовать все, что вам подходит - вы не указали, как решить, какую строку использовать при наличии дубликатов.
MERGE INTO
table_dest d
USING
(SELECT a.id, MAX(a.col1) as col1
FROM my_Table a
GROUP BY a.id) s
ON
(s.id = d.id)
WHEN MATCHED THEN UPDATE SET d.col1 = s.col1
WHEN NOT MATCHED THEN INSERT (id, col1) VALUES (s.id, s.col1);
Затем разберитесь с дублирующимися строками. Я предполагаю, что ваша таблица корзины позволяет вставлять повторяющиеся идентификаторы:
INSERT INTO my_Table_recyledbin r (id, col1)
SELECT s.id, s.col1
FROM my_Table s
WHERE EXISTS (SELECT 1
FROM my_Table t
WHERE t.id = s.id
AND t.ROWID != s.ROWID)
Надеюсь, это должно удовлетворить ваши потребности.