29. april 2009 - 10:01Der er
12 kommentarer og 1 løsning
Insert id i anden tabel
Jeg har to tabeller den ene er en udvidelse af den anden, når jeg så indsætter noget nyt i den ene skal den anden have dens autoincrementet id plus andet.
er der nogen der ved om der er nogen nem måde at indsætte et fornylig oprettet id i den anden tabel på en meget simpel måde?
det skal helst være i kun en query da der ellers kan blive problemer da det er en server der er forbundet til databasen og at den ikke opretter flere sessioner.
acore -> ved at bruge MAX(id) har jeg saa ikke en risiko for at der bliver brugt et forkert id? ex hvis to brugere opretter noget paa samme tid.
showsource -> ved du om der er en maade at jeg kan gore det i en query. fx insert into event(id,eventName) values ('','I skole'); insert into CalenderToEvent(id, calId, eventId) values ('','1',event.last_insert_id());
er der ikke en maade at gore noget lignende det? og saa bare kore det i en query?
@begge: I begge løsninger kan det teoretisk gå i ged, hvis 2 brugere er i gang samtidig, og den anden brugers første insert kommer inden den første brugers anden insert. Vil jeg mene... Men i praksis tror jeg den er helt teoretisk.
Ville du ikke gøre det lettere for dig selv ved at lave det til en tabel?
Bagefter har jeg også tænkt på at en TRIGGER ville være det helt rigtige. Problemet er bare, at det er ikke sikkert, at du har rettigheder til at lave sådan en.
Du kan teoretisk ikke garantere at en anden bruger kommer før - dvs får eksekveret sin INSERT inden dig - og så er du på den. Det er jo ikke last INSERT for din bruger.
Med en TRIGGER eller en lås på databasen kan du garantere det - ellrs ikke, vil jeg mene.
LAST_INSERT_ID() er sidste auto increment id på connection. Så uanset hvor mange der indsætter parallelt, så vil LAST_INSERT_ID() altid give den rigtige (forudsat at connection ikke deles).
Blev ogsaa enig med mig selv om at den server der kommer til at have kontakt til databasen skulle oprette en traad for hver bruger der logger ind for at holde dem adskilt i forhold til baade database og andre privilegier paa serveren. saa det er hvis den helt rigtige loesning jeg har valgt ;) saa det var rart lige at faa det paa plads
En nærlæsning af manualen bekræfter at du har ret.
Man skal aldrig stoppe med at læse for tidligt ;)
Synes godt om
Ny brugerNybegynder
Din løsning...
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.