У меня есть таблица с тремя столбцами - c_id, o_id, f_id.Комбинация трех идентификаторов должна быть уникальной, если f_id не равен 3.
После прочтения похожих вопросов я попробовал следующее:
create unique index my_index on my_table (
decode (f_id, !3, c_id, null),
decode (f_id, !3, o_id, null),
decode (f_id, !3, f_id, null));
, но я получаю отсутствует выражение ошибка.Я также пробовал с
create unique index my_index on my_table ((
case
when f_id <> 3 then c_id
when f_id <> 3 then o_id
when f_id <> 3 then f_id
else null
end));
, но для этого я получаю , не могу создать индекс;найдено повторяющихся ключей
Первоначально я пытался
when f_id <> 3 then (c_id, o_id, f_id)
, но это не сработало вообще.
В любом случае, возможно, что-то не так с индексом, посколькуВ таблице, похоже, нет дубликатов, я не получаю записей с
select c_id, o_id, f_id, count(*) as dupes
from my_table
where f_id <> 3
having count(*) > 1
group by c_id, o_id, f_id;
Я вроде как ослеп на этих ФБР, поэтому любая помощь будет признательна.