fUsiOn Skrevet 23. november 2009 Del Skrevet 23. november 2009 (endret) Sitter her med et problem. Har 3 tabeller der en tabell har en primary key med navn nummer. Har samme nøkkel som foreign key i 2 andre tabeller. Problemet da er at jeg vil fylle inn informasjon i de 2 tabellene med foreign key. Jeg skriver da inn en vanlig spørring: INSERT INTO tabell1 (nummer, abc, def) VALUES ('NULL', 'hei', 'heisann') Dette skal jo vanligvis legge inn informasjon i en tabell, men nå får jeg bare "#1452 - Cannot add or update a child row: a foreign key constraint fails (`******/tabell1`, CONSTRAINT `tabll1_ibfk_1` FOREIGN KEY (`nummer`) REFERENCES `hovedtabell` (`nummer`)) " ****** satt inn for å beskytte brukernavnet. Jeg har jo skjønnt at det er noe som mangler i spørringen, men jeg har søkt på google og prøvd og feilet, men kommer ikke noe lenger. Jeg ville hatt det slik at når jeg la til nummer i tabell 1 så ville den bli lagret i hovedtabellen også. Noen som har noe tips? Kanskje ikke alt for lett å skjønne hva jeg vil, men vet ikke helt ellers hvordan jeg skal forklare det. Endret 23. november 2009 av fUsiOn Lenke til kommentar
blackbrrd Skrevet 23. november 2009 Del Skrevet 23. november 2009 bytt ut 'NULL' med NULL 'Null' er en tekststreng som ikke finnes i hovedtabellen NULL vil si "Ingen verdi", som er lovlig så lenge du ikke har satt på NOT NULL constraint. Lenke til kommentar
fUsiOn Skrevet 23. november 2009 Forfatter Del Skrevet 23. november 2009 'NULL' og NULL blir tolke som det samme etter hva jeg kan se i mySQL. Jeg har allrede testet INSERT INTO osv i en annen database hvor tabellen ikke har noen sammenheng med noen andre tabeller. Bytta fra 'NULL' til NULL gav akkurat samme feilmelding. Lenke til kommentar
Azidops Skrevet 23. november 2009 Del Skrevet 23. november 2009 Trenger å vite hvilken database du bruker og en kode-dump av tabellene det er snakk om. Lenke til kommentar
RulleRimfrost Skrevet 23. november 2009 Del Skrevet 23. november 2009 Du må vel hente primary key fra foreldretabell å legge inn. Constraint betyr vel at tabell1.nummer skal ha en motsvarende verdi i parent-tabell. Lenke til kommentar
Azidops Skrevet 23. november 2009 Del Skrevet 23. november 2009 Når jeg tenker meg om, hvorfor vil du legge inn samme informasjon i flere tabeller? Det er jo derfor du lager forbindelser mellom tabeller for å kunne hente ut tilhørende data. Å lagre samme verdi i to tabeller bryter integriteten til databasen. Hva om bare den ene tabellen blir oppdatert? Da eksisterer det plutselig 2 forskjellige data om samme verdi. F.eks: En bil er registret hos biltilsynet med følgende attributter: - Farge - Merke - Vognkortnr En bil kan ha flere eiere som føres opp slik: - Navn - Personnummer - Vognkortnr - Farge på bil Her er fargen feilplassert. Hva om neste eier velger å lakkere om bilen? Da kan samme bilen være registret som rød i biltabellen og blå i eiertabellen. Intergriteten er brutt. Lenke til kommentar
fUsiOn Skrevet 24. november 2009 Forfatter Del Skrevet 24. november 2009 (endret) Fikk det til ved å kjøre 2 spørringer i programmet jeg har laget. Poenget er ikke å lagre samme informasjonen i flere tabeller, men ha en fellesnever som f.eks registreringsnummer. Dette endres ikke selv om bilen skifter eier. Fikk ikke dette til med å kjøre en spørring i mySQL, men fikk det til ved å kjøre to spørringer gjennom et program jeg har laget i Visual Basic. Problemet fant jeg ut etterhvert var at jeg ikke kunne lagre noen informasjon i tabell 1 eller tabell 2, uten at verdien var allerede lagt inn i hovedtabellen. Altså for å få lagt til Tabell1.nummer måtte Hovedtabelll.nummer være lagt til allerede eller så hadde ikke Tabell1 noe nummer å knytte seg til. Nybegynner i mySQL, suger til tider. Endret 24. november 2009 av fUsiOn Lenke til kommentar
blackbrrd Skrevet 24. november 2009 Del Skrevet 24. november 2009 Det går an å bytte registreringsnr på en bil, så fortsatt ikke noe god primærnøkkel... Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå