Avatar billede godtnok Nybegynder
01. februar 2001 - 15:59 Der er 6 kommentarer og
1 løsning

Hent id ved indsæt i sql db

Hejsa,

jeg skal bruge det id fra den post jeg lige har sat ind i min sql db.

Hvordan gør jeg det?
Avatar billede sone Nybegynder
01. februar 2001 - 16:02 #1
Hvis du bruger autonummer som id, kan du efterfølgende bruge:

  SELECT MAX(id) FROM tabel

for at hente nyeste id.
Avatar billede strax Nybegynder
01. februar 2001 - 16:02 #2
Du ved jo noget om den post du lige har sat ind så en

\"select id fra tabelnavn where noget = \'det du ved\'\" burde kunne gøre det
Avatar billede strax Nybegynder
01. februar 2001 - 16:03 #3
3 sekunder :-(, men alligevel lidt forskellige løsninger ... hæhæ
Avatar billede godtnok Nybegynder
01. februar 2001 - 16:07 #4
Sone >> Kunne der teoretisk set ikke ske fnidder fnadder, hvis der er flere personer som trykker \"skriv til db\" på samme tidspunkt?
Avatar billede retep Nybegynder
01. februar 2001 - 16:10 #5
Når du henter id\'et ud igen er det en god idé at låse tabellerne for ikke at rende ind i samtidigheds problemer... Hvis du ikke låser tabellerne kan du risikere at der er en ny bruger der logger ind, inden du når at hente id\'et...

Jeg har et eksempel fra en MySQL database... :

        sqllock = \"LOCK TABLES session WRITE;\"
        cnnConn.execute(sqllock)

        strSqlins = \"insert into session values (\'\', \'\" & nu & \"\', \'false\', \'\" & ip & \"\',\'false\') \"
        cnnConn.execute(strSqlins)

        sqlid = \"select LAST_INSERT_ID();\"
        rs = cnnConn.execute(sqlid)

        \'returværdien skal være inde i låsen ellers mister den sin værdi
        indsaet_session = rs(0)

        sqlunlock = \"UNLOCK TABLES;\"
        cnnConn.execute(sqlunlock)

Mvh
Retep
Avatar billede eagleeye Praktikant
01. februar 2001 - 16:14 #6
Hvis du skal være dødsenssikker sikker på at det virkelig er det id, som netop er blevet oprettet, så ville jeg benytte T-SQL\'s udmærkede @@identity. f.eks.:

SQL = \"INSERT INTO something(field1, fields2) VALUES (8,8)\"

Conn.Execute(SQL)

Set TmpId = Conn.Execute(\"SELECT @@IDENTITY FROM something\")

Så får man den rigtige ID.
Avatar billede slash Nybegynder
02. februar 2001 - 10:05 #7
Man kunne vel oxo bruge select top (virker både i Access2000/sql server 7.0 og op)! Noget i retning af:

sql = \"insert tabel(id) values(1)\"
conn.execute(sql)

top_id = \"select top 1 id from tabel\"
set res = conn.execute(top_id)

n = res.eof
if n >=0 then
    a=res.getrows()
    res.close
    for row=0 to ubound(a,2)
      id = a(0,row)
    next
    Response.write id
end if
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