ORA-02291:naruszono wiezy integralnosci
mamin@o2.pl - 12-08-2006 01:32
ORA-02291:naruszono wiezy integralnosci
Witam, Mam bazke na Oracle 9.2. W schemacie TEST mam m.in tabele zamowienia_pozycje i stawki_vat. Kiedy robie inserta:
INSERT INTO ZAMOWIENIA_POZYCJE (ZAMOWIENIE_ID,OPERATOR_ID,POZYCJA_ASORTYMENTOWA_I D,POZYCJA_CENNIKA_ID,CENA,WARTOSC_WSPOLCZYNNIKOW,S TAWKA_VAT_ID, STATUS_POZYCJI_ZAMOWIENIA_ID,LICZBA_SZTUK,ZLOZONA_ NAZWA_POZYCJI) VALUES (4,1,6,1,2,1,1,1,1,'test')
Oracle rzuca mi blad: "ORA-02291: naruszono wiezy integralnosci (TEST.ZAM_POZ_STAWKA_VAT_FK) - nie znaleziono klucza nadrzednego\n"
Constraint ZAM_POZ_STAWKA_VAT_FK wrzucony do skryptu wyglada tak: --ZAM_POZ_STAWKA_VAT_FK -- ALTER TABLE ZAMOWIENIA_POZYCJE ADD ( CONSTRAINT ZAM_POZ_STAWKA_VAT_FK FOREIGN KEY (STAWKA_VAT_ID) REFERENCES FAKTURY_VAT (ID));
Czy moze mi ktos powiedziec, dlaczego ten constraint blokuje mojego inserta?
Marcin 'goral' Goralski - 12-08-2006 01:32
mamin@o2.pl wrote: > Witam, > Mam bazke na Oracle 9.2. W schemacie TEST mam m.in tabele > zamowienia_pozycje i stawki_vat. > Kiedy robie inserta: > > INSERT INTO ZAMOWIENIA_POZYCJE > (ZAMOWIENIE_ID,OPERATOR_ID,POZYCJA_ASORTYMENTOWA_I D,POZYCJA_CENNIKA_ID,CENA,WARTOSC_WSPOLCZYNNIKOW,S TAWKA_VAT_ID, > STATUS_POZYCJI_ZAMOWIENIA_ID,LICZBA_SZTUK,ZLOZONA_ NAZWA_POZYCJI) > VALUES (4,1,6,1,2,1,1,1,1,'test') > > Oracle rzuca mi blad: > "ORA-02291: naruszono wiezy integralnosci > (TEST.ZAM_POZ_STAWKA_VAT_FK) - nie znaleziono klucza nadrzednego\n" > > Constraint ZAM_POZ_STAWKA_VAT_FK wrzucony do skryptu wyglada tak: > --ZAM_POZ_STAWKA_VAT_FK > -- > ALTER TABLE ZAMOWIENIA_POZYCJE ADD ( > CONSTRAINT ZAM_POZ_STAWKA_VAT_FK FOREIGN KEY (STAWKA_VAT_ID) > REFERENCES FAKTURY_VAT (ID)); > > > Czy moze mi ktos powiedziec, dlaczego ten constraint blokuje mojego > inserta? >
A istnieje w tablicy FAKTURY_VAT faktura o ID=1 ?
marcin
mamin@o2.pl - 12-08-2006 01:32
Marcin 'goral' Goralski napisał(a): > mamin@o2.pl wrote: > > Witam, > > Mam bazke na Oracle 9.2. W schemacie TEST mam m.in tabele > > zamowienia_pozycje i stawki_vat. > > Kiedy robie inserta: > > > > INSERT INTO ZAMOWIENIA_POZYCJE > > (ZAMOWIENIE_ID,OPERATOR_ID,POZYCJA_ASORTYMENTOWA_I D,POZYCJA_CENNIKA_ID,CENA,WARTOSC_WSPOLCZYNNIKOW,S TAWKA_VAT_ID, > > STATUS_POZYCJI_ZAMOWIENIA_ID,LICZBA_SZTUK,ZLOZONA_ NAZWA_POZYCJI) > > VALUES (4,1,6,1,2,1,1,1,1,'test') > > > > Oracle rzuca mi blad: > > "ORA-02291: naruszono wiezy integralnosci > > (TEST.ZAM_POZ_STAWKA_VAT_FK) - nie znaleziono klucza nadrzednego\n" > > > > Constraint ZAM_POZ_STAWKA_VAT_FK wrzucony do skryptu wyglada tak: > > --ZAM_POZ_STAWKA_VAT_FK > > -- > > ALTER TABLE ZAMOWIENIA_POZYCJE ADD ( > > CONSTRAINT ZAM_POZ_STAWKA_VAT_FK FOREIGN KEY (STAWKA_VAT_ID) > > REFERENCES FAKTURY_VAT (ID)); > > > > > > Czy moze mi ktos powiedziec, dlaczego ten constraint blokuje mojego > > inserta? > > > > A istnieje w tablicy FAKTURY_VAT faktura o ID=1 ? > > marcin
Nie, tablica FAKTURY_VAT jest pusta, gdyż wpis do niej ma nastąpić już po tym insercie który chcę wykonać. Baza do tej pory działała, jedyne co zrobiłem to wyczyściłem zawartości kolumn i ustawiłem od nowa wartości sekwencji.Od tej chwili mam problem z tym constraintem. Co dokładnie chce wymusić ten constraint ?
Marcin 'goral' Goralski - 12-08-2006 01:32
mamin@o2.pl wrote:
> Nie, tablica FAKTURY_VAT jest pusta, gdyż wpis do niej ma nastąpić > już po tym insercie który chcę wykonać.
Wlasnie.
> constraintem. Co dokładnie chce wymusić ten constraint ?
To, co z reguly wymusza klucz obcy.
marcin
mamin@o2.pl - 12-08-2006 01:32
> To, co z reguly wymusza klucz obcy. > > marcin
Nadal nie rozumiem. Tablica zamowienia_pozycje ma dwie istotne kolumny: 1.stawka_vat_id - przez co wiąże się z tabelą stawki_vat 2.faktura_vat_id - przez co wiąże się z tabelą faktury_vat.(Moze byc rowna null).
Co zatem oznacza wpis:
ALTER TABLE ZAMOWIENIA_POZYCJE ADD ( CONSTRAINT ZAM_POZ_STAWKA_VAT_FK FOREIGN KEY (STAWKA_VAT_ID) REFERENCES FAKTURY_VAT (ID));
Że kolumna stawka_vat_id z tabeli ZAMOWIENIA_POZYCJE zawiera klucz obcy z tabeli FAKTURY_VAT ? Przecież tak nie jest. Skąd wogóle się biorą te constrainty?
Marcin 'goral' Goralski - 12-08-2006 01:32
mamin@o2.pl wrote: >> To, co z reguly wymusza klucz obcy. >> >> marcin > > Nadal nie rozumiem. Tablica zamowienia_pozycje ma dwie istotne kolumny:
Proponuje doczytac troche o kluczach obcych.
> > ALTER TABLE ZAMOWIENIA_POZYCJE ADD ( > CONSTRAINT ZAM_POZ_STAWKA_VAT_FK FOREIGN KEY (STAWKA_VAT_ID) > REFERENCES FAKTURY_VAT (ID));
Widac tu klucz obcy do tablicy faktury_vat.
> > Że kolumna stawka_vat_id z tabeli ZAMOWIENIA_POZYCJE zawiera klucz > obcy z tabeli FAKTURY_VAT ? Przecież tak nie jest. Skąd wogóle się > biorą te constrainty?
Panie, a skad to ja mam wiedziec ? Czy to ja projektowalem to cos ? Widocznie takie byly wymagania projektowe, tak zostala zrozumiana logika i funkcjonalnosc, i, sadzac po nazwach tablic, calkiem slusznie. STAWKA_VAT_ID jest kluczem obcym do tablicy FAKTURY_VAT, odnoszacym sie do pola ID tejze tablicy i najprawdopodobniej bedacym kluczem glownym tejze tabeli. Prosze troche doczytac, w zrozumieniu moze pomoc przyklad _relacji_ pomiedzy rodzicem i dzieckiem (dziecmi). Rodzic moze, lecz nie musi miec dzieci. Dziecko musi miec rodzicow (nie rozpatrujemy tutaj przypadkow medycznych sztucznego zaplodnienia)
marcin
mamin@o2.pl - 12-08-2006 01:32
> > Panie, a skad to ja mam wiedziec ? Czy to ja projektowalem to cos ? > Widocznie takie byly wymagania projektowe, tak zostala zrozumiana logika > i funkcjonalnosc, i, sadzac po nazwach tablic, calkiem slusznie. > STAWKA_VAT_ID jest kluczem obcym do tablicy FAKTURY_VAT, odnoszacym sie > do pola ID tejze tablicy i najprawdopodobniej bedacym kluczem glownym > tejze tabeli.
Ale jaka w tym logika? STAWKA_VAT_ID powinna być kluczem do tablicy STAWKI_VAT odnoszącym się do jej pola ID, a nie do jakiejś z kosmosu wziętej tabeli FAKTURY_VAT. Wywaliłem tego constrainta. Ale dzięki za odpowiedź, bo pomogła mi sporo zajarzyć.
Pozdrawiam, Marcin
Marcin 'goral' Goralski - 12-08-2006 01:32
mamin@o2.pl wrote:
> Ale jaka w tym logika?
Panie, a skad ja do cholery mam wiedziec ? Nie projektowalem tej aplikacji/systemu.
> STAWKA_VAT_ID powinna być kluczem do tablicy > STAWKI_VAT odnoszącym się do jej pola ID,
Niech sie Pan lepiej zapyta producenta, co powinno a co nie.
> Wywaliłem tego constrainta. Ale dzięki za odpowiedź, bo pomogła mi > sporo zajarzyć.
Jesli to system dostarczany przez inna firme, to prosze sie nie zdziwic, jesli odmowia supportu. Do tego, powiem Panu szczerze ... wylecialby Pan u mnie z roboty jak nic, gdyby modyfikowal Pan sobie logike aplikacji/systemy ze wzgledu na to, co sie Panu wydaje.
Niemniej, ciesze sie, ze pojal Pan istote dzialania kluczy obcych.
marcin
Sławomir Szyszło - 12-08-2006 01:32
Dnia 8 Aug 2006 04:55:27 -0700, mamin@o2.pl wklepał(-a):
>Ale jaka w tym logika? STAWKA_VAT_ID powinna być kluczem do tablicy >STAWKI_VAT odnoszącym się do jej pola ID, a nie do jakiejś z kosmosu >wziętej tabeli FAKTURY_VAT. >Wywaliłem tego constrainta. Ale dzięki za odpowiedź, bo pomogła mi >sporo zajarzyć.
Z tego co ja rozumiem, to stawka VAT w pozycji zamówienia (czymkolwiek to jest) musi być taka sama jak w "źródłowej" (?) fakturze VAT.
A jak nie znasz zależności logicznych między tabelami, to nie wstawiaj rekordów "z ręki". -- Sławomir Szyszło mailto:slaszysz@poczta.onet.pl Primus inter FAQires & Grand Inquisitor no.0 of pl.comp.bazy-danych FAQ pl.comp.bazy-danych http://www.dbf.pl/faq/ Archiwum http://groups.google.com/groups?grou...mp.bazy-danych
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
=?iso-8859-2?q?ORA-12528:_TNS:nas=B3uch:_nowe_po=B3=B1czenia_s=B1_blo kowane_przez_wszystkie?=
ORA-00600: internal error code, arguments: [729], [266536],[space leak]
ORACLE - ORA-12545: Connect failed because target host or object does not exist
SELECT MAX(nazwaPola) FROM tabela WHERE .... i ORA-01405: pobran? warto?ci? kolumny jest NULL
[ORACLE] 9.2 - problem przy imporcie do bazy z UTF8 (ora-1401)
ORA-12154: TNS: nie udalo sie rozstrzygnac podanego identyfikatora polaczenia
TOAD blad polaczenia z serwerem: ORA-01031 insufficient privileges
ORACLE - brak procesu nasłuchu TOAD ORA-12541
[Oracle] Nie dziala MERGE przez @dblink (ORA-02064)
ORA-02095: Podany parametr inicjalizacyjny nie moze byc modyfikowany
zanotowane.pldoc.pisz.plpdf.pisz.plwawa19wwa91.pev.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|