Я создал селективный уникальный индекс
CREATE UNIQUE INDEX fn_unique_idx
ON table1 (CASE WHEN is_deleted='N' THEN id ELSE null END,
CASE WHEN is_deleted='N' THEN name ELSE null END,
CASE WHEN is_deleted='N' THEN type ELSE null END);
Так что в любой момент времени мне нужна только одна запись с is_deleted 'N' для (id, name, type).
Вставка работает нормально, т. Е. Она позволяет ввести несколько is_deleted 'Y' и генерирует уникальное константное исключение, когда я пытаюсь вставить с is_deleted = 'N', что ожидается.
Но когда я пытаюсь обновить это thowing
oracle error:
ORA-00600: internal error code, arguments: [qctVCO : bfc], [1], [0], [1], [871], [1], [2], [875], [], [], [], []
SQL : UPDATE table1 set is_deleted = 'Y' where id = 1, name = 'foo' and type =bar';
Я хочу установить текущую запись как удаленную и вставить новую запись с обновленными данными и is_deleted = 'N'. Это в основном для поддержания истории.
Может кто-нибудь помочь мне решить эту проблему.
Спасибо.