Współpracuję z Oracle 11g.
Mam jedną tabelę:Wyjątki w klauzuli nie działa podczas tworzenia ograniczenia
create table test (one number(2), two number(2));
Istnieją 2 rzędy:
insert into test (one, two) values (1, 1);
insert into test (one, two) values (2, null);
commit;
Teraz tworzę tabelę wyjątkami:
create table exceptions(row_id rowid,
owner varchar2(30),
table_name varchar2(30),
constraint varchar2(30));
Teraz chcę utworzyć klucz podstawowy dla testu :
alter table test add constraint test_pk primary key (one, two) exceptions into exceptions;
Oczywiście pojawia się następujący błąd: ORA-01449
Ale wiersz, który spowodował wyjątek, nie znajduje się w tabeli wyjątków?
Czy ktoś może mi pomóc. Dzięki z góry
Wolfgang
bash Nici Oracle to najwyraźniej szybki sposób na zdobycie punktów ... jak to jest +2 bez jednego komentarza? Otrzymany błąd mówi, że pola klucza głównego nie mogą zawierać wartości null. Nie oznacza to, że wyjątki Oracle nie działają. Spójrz na swój stół, czy widzisz jakieś ograniczenia? – tbone
@tbone, nie chodzi o obsługę wyjątków. Chodzi o klauzulę "wyjątki w". To, co opisuje OP, jest dokładnie takie, i jest uzasadnionym pytaniem, ponieważ dokumentacja nie podaje tych informacji. Problem polega na tym, że nie można utworzyć ograniczenia I zgłaszać wyjątków w jednym kroku. Jak to jest "walenie" Oracle? – DCookie
@DCookie Rozumiem, że chodzi o klauzulę "wyjątki w", ale tytuł to "Wyjątki oracle nie działają". Nie jest to kwestia Oracle (w jaki sposób wyjątki dziennika ograniczeń mogą być tworzone nawet wtedy, gdy nie można ich utworzyć, należy je najpierw utworzyć przed załadowaniem wartości zerowych lub wykonać zgodnie z sugestią, aby ją wyłączyć). Po utworzeniu może wykonać swoją pracę. Po prostu wydaje mi się to zabawne, że natknąłem się na kilka wątków "dlaczego Oracle ssą", które natychmiast zdobywają punkty w oparciu o, cóż, nie wiem. Na przykład zobacz http://stackoverflow.com/questions/11191299/why-is-there-a-maksimum-length-for-stored-procedure-names. – tbone