14. januar 2003 - 22:47Der er
12 kommentarer og 1 løsning
Opret vare og få samtidig ID nummer tilbage!
Hej experter
Jeg ved ikke om dette spørgsmål skulle have været i noget SQL kategori istedet...
Men sagen er den at jeg opretter en port i min MySQL db med en INSERT INTO Den port har så en ID eller i mit tilfælde et felt der hedder varenummer Findes der en SQL der samtidig med at oprette posten returnere værdien af varenummer i den post den lige har oprettet?
Ja der kan godt være på brugere på køre samme script på samme tid, men det vil være to forskellige connection og hvis det passer hvad de skriver vil der være en LAST_INSERT_ID() pr connection.
"The most recently generated ID is maintained in the server on a per-connection basis. It will not be changed by another client."
connection.Execute("INSERT INTO bla VALUES ( bla )") Set rs = connection("SELECT LAST_INSERT_ID() FROM bla")
Hvis der så er en bruger der *køre* scriptet på samme tid, men den der først køre når kun til den første connection.Execute og så kommer den anden og køre begge og så kommer den første tilbage og udføre sin sidste conn.execute..
Nu har vi jo et lille problem.
Begge brugere vil tilsyneladende have oprettet den samme post.. Den første brugeres rs vil indeholde den den post som den sidste bruger oprettede jo. Dette er sikkert kun et problem på meget store systemer med en masse brugere, men man skal vel alligevel gøre sig det for øje. Kan man syncronicere asp sider eller er de automatisk det?
Jeg ved ikke helt hvordan jeg skal sige det. Hver bruger køre ASP filen men det vil være hver sin tråd på serveren så de to sider ikke har noget med hinanden at gøre. Hvis det var samme variable som to bruger brugte på en side ville det ende helt galt hvis man bare har 5-6 bruger online.
Hver tråd får så hver sin connection til databasen så selv bruger2 lige når at indsætte før bruger1 hendte ID, så ændre det ikke på bruger1 ID. Hvis jeg læser detsom der står på mysql.com rigtigt, hvilket jeg mener jeg gør ;) Eller så afvis mit svar og sprøg i MySQL kategorien.
Nej, for nu er det jo at asp spørgsmål vi er igang med.
Du skriver rigtig nok at de 2 brugere ikke bruger de samme variabler, men de bruger jo den samme DB!
Men hvis den enes insert ikke influrere den andens selv om dette skulle ske på samme tid er den fin nok med mig. .. Der hvor jeg kunne se problemet:
Bruger1: connection.execute(INSERT SQL) <- Her bliver bruger1 interrupted og bruger2 kommer til. Bruger2: connection.execute(INSERT SQL) Bruger2: Set rs = connection.execute(senest lavet post (bruger2)) <- Har er bruger2 færdig og bruger1 får nu cpu tid igen Bruger1: Set rs = connection.execute(senest lavet post (bruger2))
Hvis kørslen af scriptet er sådan er det uhensigtsmæssig.
Men hvis bruger1 alligevel vil få fat i sin senest oprettet post er der jo ingen problemer.
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.