INSERT INTO ZAMOWIENIA_POZYCJE
(ZAMOWIENIE_ID,OPERATOR_ID,POZYCJA_ASORTYMENTOWA_ID,POZYCJA_CENNIKA_ID,CENA,WARTOSC_WSPOLCZYNNIKOW,STAWKA_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 ?
> 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
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?
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
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
> 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
>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:slas...@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?group=pl.comp.bazy-danych