Avatar billede jriff Nybegynder
12. februar 2003 - 21:38 Der er 10 kommentarer

Insert into og primary key

Hej Alle!

Lige et spørgsmål:
Jeg laver en insert into på min access-database. Jeg skal bruge primary key (som er autonumber) på den record jeg lige har oprettet. Hvordan gør man det?

HUSK at dette er en webapplikation, derfor fungerer det ikke med rs.movelast, ej heller max(primary_key). Der er desværre ikke noget unikt i tabellen jeg kan bruge til et query.

Tak på forhånd!
Avatar billede erikjacobsen Ekspert
12. februar 2003 - 21:43 #1
Bruger du en ny driver (..Jet..) mener jeg du kan bruge @@IDENTITY,
og ellers er min gamle vejledning vist stadig god nok:
http://www.1script.com/asp0001.html
Avatar billede jriff Nybegynder
12. februar 2003 - 21:46 #2
Det ser fint ud.... er application.lock en VB-kommando? Skal den kommando ikke udføres på databasen? Hvad sker der hvis en anden prøver at opdatere databasen mens den er locked?

Ellers mange tak for det hurtige svar!
Avatar billede radion Nybegynder
12. februar 2003 - 21:46 #3
Du kan da lave en forspørgsel efterfølgende med "Select Top 1 [primary key] from [tabel] order by [primary key] asc"

Så får du den sidste du har oprettet
Avatar billede jriff Nybegynder
12. februar 2003 - 21:49 #4
radion > Ja, men hvad hvis nogen har oprettet en ny record inden jeg får hentet ID'et? Det er netop dér problemet ligger:

opret record
[en anden opretter en record]
hent max(ID)

Så fik jeg et forkert ID!
Avatar billede erikjacobsen Ekspert
12. februar 2003 - 21:49 #5
Du bør ikke bruge application.lock - med mindre du forventer et
superlavt antal brugere. Ellers er der nogen der må vente.
Select top 1 - ja, den går jo galt, med mindre man låser. Og
er dyrere end de andre korrekte løsninger.
Avatar billede jriff Nybegynder
12. februar 2003 - 22:09 #6
erikjacobsen > Laver du ikke lige et _svar_ så du kan få points?

Du kan evt svare på dette spørgsmål samtidig :-)

Kommer hidden fields med i en "for each key in request.form"?
Avatar billede radion Nybegynder
12. februar 2003 - 22:15 #7
problemet med om nogen laver en ny imens er uinterresant, da der går mindre end 1/100 sekund fra du laver oprettelsen til du forespørger...
Avatar billede jriff Nybegynder
12. februar 2003 - 22:22 #8
radion > Ikke for at genere dig, men du skal nok lige sætte dig lidt mere ind i tingene. Det er meget sansyneligt at det sker hvis der er mange brugere samtidig, og selvom det tager så kort tid KAN det stadig gå galt, og det må det ikke. Det er meget dårlig programmeringsskik bare at regne med at tingene "nok" ikke går galt!
Avatar billede radion Nybegynder
12. februar 2003 - 22:25 #9
fair nok. beklager
Avatar billede erikjacobsen Ekspert
12. februar 2003 - 22:53 #10
Hidden fields kommer med, som du anfører. Man kan på
serveren end ikke se de er hidden.

Ingen point tak - for tiden i hvert fald.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester