Oracle уникальное нарушение ограничения, ссылающееся на ограничение, которое, кажется, не существует - PullRequest
6 голосов
/ 17 января 2012

Я получаю ошибку, которую не могу понять. Ошибка довольно проста:

ORA-00001: unique constraint (*schema*.*xyz_constraint*) violated

Однако, то, что вызывает мое замешательство, так это то, что такого ограничения, похоже, не существует. Это определенно не определено на столе; в рассматриваемой БД почти не определена ссылочная целостность, а в конкретной таблице, в которую я вставляю данные, не определен ключ.

Для чего бы то ни было, я не могу найти ограничение в базе данных:

    select *
    from all_constraints 
    where constraint_name like '%xyz_constraint%'

Есть что-нибудь, что я пропускаю? Спасибо.

Ответы [ 3 ]

4 голосов
/ 17 января 2012

Это происходит, когда ограничение принадлежит другому пользователю, и у вас нет прав на него.

Попробуйте посмотреть еще раз с точки зрения SYS

2 голосов
/ 05 апреля 2018

У меня была та же самая ошибка, и это не было проблемой с разрешениями.Скорее, сущность оказалась INDEX, а не CONSTRAINT, и я нашел ее с помощью:

SELECT * FROM ALL_INDEXES WHERE INDEX_NAME LIKE '%XYZ_UK1'

... потому что она не существовала в ALL_CONSTRAINTS или DBA_CONSTRAINTS.Путать, как сообщение об ошибке то же самое.Я использую Oracle 11g.

1 голос
/ 17 января 2012

Имена объектов схемы почти всегда хранятся в верхнем регистре.Попытка

select *
from all_constraints 
where constraint_name like '%XYZ_CONSTRAINT%'

ORA-00001 обычно происходит для дублированных первичных ключей.Вы уверены, что у вас его нет на столе?

...