2012-01-17 4 views
5

Otrzymuję błąd, którego nie mogę zrozumieć. Błąd jest dość prosty:Naruszenie ograniczeń przez Oracle odwołujące się do ograniczenia, które prawdopodobnie nie istnieje

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

Jednak to, co powoduje moje zamieszanie, to fakt, że takie przymus nie istnieje. Z pewnością nie jest zdefiniowany na stole; DB, o którym mowa, prawie nie ma zdefiniowanej integralności referencyjnej, a konkretna tabela, do której wstawiam dane, nie ma zdefiniowanego klucza.

Na co warto, nie mogę znaleźć nigdzie ograniczenia w bazie:

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

Czy coś mi wychodzi? Dzięki.

+6

Kiedy próba jest wykonana tak, że wyjątkowy ** ** indeks musiałby duplikat, Oracle będzie raportować jako unikalny ** ** naruszenie więzów. Sugerowałbym więc poszukiwanie unikalnych indeksów oprócz ograniczeń. –

Odpowiedz

4

Dzieje się tak, gdy ograniczenie należy do innego użytkownika i nie masz do niego uprawnień.

Spróbuj poszukać go ponownie do teraz z perspektywy SYS

+0

Muszę zająć się jednym z DBA. Naturalnie nie mam dostępu do SYS do schematu. Ciekawie będzie zobaczyć, co jest grane, ponieważ trwają dwa lata bez problemu z ograniczeniami. Dzisiaj dostałem 600 błędów. Dzięki za opinie; Dam ci znać, co znajdę. – Ickster

+0

@Ickster: Nie pamiętam przyczyn, ale miałem dokładnie to samo zachowanie i to było to, co powiedziałem ;-) W każdym razie, powodzenia w badaniach i czekania na szczegóły, co to było w twoim przypadku. – zerkms

+2

Po prostu zapytanie Zamiast tego "DBA_CONSTRAINTS". Jeśli masz dostęp do tego widoku, to jeśli istnieje, będzie tam. 'SYS' nie jest koniecznie wymagane -' SYSTEM' również miałby do niego dostęp. –

1

Nazwy obiektów schematu są prawie zawsze zapisywane dużymi literami. Spróbuj

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

ORA-00001 zwykle bywa duplikatów kluczy podstawowych. Czy na pewno nie masz jednego na stole?

+0

Rzeczywista wyszukiwana kwerenda zawierała nazwę ograniczenia dokładnie tak, jak została zwrócona w otrzymanym błędzie. Jestem pewien, że na stole nie ma zdefiniowanego klucza. Jedyne ograniczenia NIE są deklaracjami NULL na kilku polach. – Ickster

Powiązane problemy