jc denton,
nisam siguran da li je ovo pitanje ili samo konstatacija. Ako nije pitanje, onda zanemari (ili obrisi) ovaj post.
Citat:
jc denton
Ja sam probao da obrisem par redova (u bazi NWind.mdb) u Orders tabeli sve funkcionise ok, ali u Customers tabeli Update javlja gresku
Dakle, da vidimo zasto record moze u Orders tabeli da se obrise, a u Customers tabeli ne moze.
Orders tabela ime definisanu relaciju jedan-prema-mnogo prema tabeli OrderDetails, i tu uz atribute:
Enforce Referential Integrity i Cascade Delete Related Records.
Sta ovo znaci?
Kada obrises record u tabeli Orders, onda ce automatski da se obrisu i sva polja iz tabele OrderDetails koja imaju isti OrderID. Logicno, jer bilo bi potpuno pogresno da imas detalje za neku narudzbu u OrderDetails a da ta narudzba ne postoji u tabeli Orders.
E sad, slicno je sa tabelom Customers.
Ona ima definisanu relaciju jedan-prema-mnogo prema tabeli Orders, ali ovde NIJE definisan atribut Cascade Delete Related Records, a JESTE definisan atribut Enforce Referential Integrity --- sto te efektivno sprecava da obrises nekog kupca u tablei Customers ako postoji narudzba od tog kupca u tabeli Orders.
Zasto? Pa recimo JC DENTON je registrovan u tabeli Customers kao kupac, i izvrsio si neku narudzbu, sto znaci da odmah imas polja u tabeli Orders (i OrderDetails) koja pokazuju sta si narucio.
E sad, ako bi obrisao JC DENTON-a iz tabele Customers, sta bi se desilo sa tvojom narudzbom u tabeli Orders? Na koga bi ona pokazivala? Pokazivala bi da je narudzbu izvrsio kupac koji u stvari ne postoji jer smo te izbrisali iz tabele Customers. Upravo zato je i definisana relacija koja sprecava ovakvu nelogicnost.
Za trenutak se cini da je resenje definisanje atributa Cascade delete... za ovu relaciju (isto kao prethodna tabele Order i OrderDetails), medjutim nije izvodljivo jer Order tabela je dalje povezana sa OrderDetails vezom jedan-prema-mnogo.
Resenje (konacno, eh?:):
da bi obrisao kupca iz tabele Customers, moras prvo da obrises sve narudzbe koje je taj kupac imao (u tabeli Orders, a ovo ce automatski da obrise odgovarajuce detalje narudzbe iz OrderDetails zbog onog Cascade Delete..), a onda mozes i doticnog da obrises iz tabele Customers.
HTH.
p.s.
Slicne relacije postoje izmedju drugih tabela, pa bi predlozio da pogledas kako je baza napravljena sa osvrtom na relacije izmedju tabela.
Commercial-Free !!!