[FB] Problemy z kluczem obcym

Odpowiedz Nowy wątek
2006-11-29 12:25

Rejestracja: 16 lat temu

Ostatnio: 2 dni temu

0

No więc okazało się w pewnym momencie, że gdy założę klucze obce na mojej bazie, zaoszczędzi mi to ogromną ilość roboty podczas pewnych operacji.
Natomiast stało się to, czego się obawiałem. A mianowicie straciłem całą kontrolę nad bazą, jaką miałem.

I teraz np mam taką sytuację - są 2 tabele: BANKI(ID, ...) i SALONY(ID, ID_BANKU, ...)

Załóżmy, że czasami potrzebuję zainsertować rekord do tabeli salony z ID_BANKU = -1.
Wtedy wyskakuje mi violation on foreign key(bo nie ma takiego id w tabeli BANKI).

Podobne operacje mam "porozrzucane" po całym programie.
Teraz moje pytanie, czy mogę zrobić coś, żebym mógł insertować(updateować) takie rekordy nie tracąc powiązań?

Pozostało 580 znaków

2006-11-29 21:04

Rejestracja: 13 lat temu

Ostatnio: 3 lata temu

0

Założyć bank z id -1 dla salonów nie mających banku, a w programie, np. w słowniku pokazywać banki tylko od 1. Sposób brzydki, ale jedyny.

Pozostało 580 znaków

2006-11-30 01:35

Rejestracja: 16 lat temu

Ostatnio: 7 lat temu

0

wstawić za id_banku null


- Ciemna druga strona jest.
- Nie marudź Yoda, tylko jedz tego tosta.
Google NIE GRYZIE!
Pomogłem - kliknij

Pozostało 580 znaków

2006-11-30 10:35

Rejestracja: 16 lat temu

Ostatnio: 2 dni temu

0
rafalw napisał(a)

Założyć bank z id -1 dla salonów nie mających banku, a w programie, np. w słowniku pokazywać banki tylko od 1. Sposób brzydki, ale jedyny.

Też o tym myślałem, nawet nie sprawdziłem, ale czy ID kluczy głównych mogą być liczbami ujemnymi?

Poza tym jest jeszcze jeden problem, przez który nie mogę tak postąpić, jak napisał Misiek, czy też tak. Mam jeszcze jedną tabelę, która w kluczu obcym może przyjmować ujemne wartości(-1, -2, -3...itd). Rozróżniam tak "klientów anonimowych".

To powinno tak zostać, dodatkowo z powodu utrzymania integracji ze wcześniejszą wersją bazy(tak, żeby import danych z wcześniejszej wersji był możliwy i nic się nie popsuło)

Gdyby była możliwość zmiany triggera, który odpowiada za te powiązania....

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0