06. august 2003 - 21:24Der er
10 kommentarer og 1 løsning
Indsætte data i binært træ
Jeg har et problem når jeg registrere værdier i min MySQL database. Jeg har nogle brugere som via en webside (jsp og java bønner) skal indtaste nogle data, som så skal lagres i min db. Efterfølgende skal denne bruger have vist en kvittering for hvad det var han registrerede i db’en.
Min table består af følgende kolloner:
ID (Primary Key, auto-increment) location_name location_id level
Her er det meningen at der skal registreres svarende til et binært træ. Altså på level 1 skal der registreres et rum/lokale. På level 2 skal der registreres en skab eller lignende i rummet fra level 1 (location_id sættes her til id for rummet fra level 1). på level 3 registreres en hylde i skabet fra level 2 (Her sættes location id til id fra skabet på level 2)…..
Det jeg så vil kunne det er når, jeg står med 3 værdier for 3 levels, så vil jeg kunne gemme dem i db korrekt så jeg får noget der ligner dette:
Her kunne der jo godt være flere rum med samme navn. Hvordan kan jeg så være sikker på at jeg får den korrekte id sat ind som location id for level 1... og den korrekte id som location id for level 2????
Min id kolonner er min pk og er et auto increment felt, og denne kan så vel ikke medtages i en insert statement…
Selve registreringen og den efterfølgende hentning af data foregår fra en java bønne. Der skal så først registreres, og lige derefter skal der laves en søgning på de samme data for at udskrive en kvittering. Men da min eneste unikke kolonne ikke styres af mig men af MySQL, hvordan kan jeg så være sikker på at jeg henter de data jeg lige har lagret....?????
Kort: hvordan lagre man i et binært træ og henter data igen og sikre sig at det er de værdier man lige har lagret man finder igen??
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
Jeg tror det jeg er ude efter er det du beskriver som stmt.getGeneratedKeys(). Jeg tror ikke det i denne sammenhæng ville være smart at bruge LAST_INSERT_ID, der kunne jo have været en anden bruger der har registreret noget i den tid der går mellem registrering og hentning af data. Mht. antallet af niveauer er de tre her nævnt kun et udgangspunkt. Det kan senere blive ændret.
Et lille tillæg: Jeg har jo tre værdier som skal sættes ind. Jeg havde forestillet mig noget lignende:
INSERT INTO location (location_name, level) VALUES ("Kælder", 0);
Derefter stmt.getGeneratedKeys() og så gøre det samme for næste niveau.
INSERT INTO location (location_name, location_id, level) VALUES ("Skab", "stmt.getGeneratedKeys()", 1);
Og så det samme for næste level.
Hvis jeg sætter autoCommit = false, vil jeg så stadig få genereret en værdi for det felt som er auto increment, eller vil det først ske når man siger commit??
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.