webForumDet fria alternativet

högsta värdet +1 vid en insert

Databaser & SQL

4 svar · 294 visningar · startad av SugarDaddy

Medlem sedan apr. 20021 155 inlägg
Frågan#1

Jag gör en vanlig INSERT:

INSERT INTO tbl_category SET langid='$langid', componentid='$componentid', sublevel='1', 
author='$author', publish='$publish' osv..

Fint så, men vad jag skulle vilja göra är att redan i första inserten även få in att fältet "ordering" automatiskt sätts till MAX(ordering)+1, går detta eller måste jag först plocka ut det aktuella autoincrement-värdet via mysql_insert_id() exvis, SELECT MAX enligt ovan, och sedan gör en ny INSERT via id:et?
(db = mysql)

Medlem sedan juni 200032 967 inlägg
#2

vilken version av MySQL?

Om versionen stödjer subqueries borde du kunna göra så här:

INSERT INTO tabell (fld1, fld2) VALUES ('foo', (SELECT Max(bar)+1 FROM tabell))

Möjligen.

mvh

Medlem sedan apr. 20021 155 inlägg
#3

Mmm, funderade på det men jag vet tyvärr inte vilken version (4.1 som krävs för subqueries lr hur), dom har inte bestämt webbhotell än och jag har ingen möjlighet att påverka valet heller så jag "vågar" inte chansa.

Medlem sedan juni 200032 967 inlägg
#4

Då får du nog kolla upp först vilket värde du ska stoppa in.

Medlem sedan dec. 200012 464 inlägg
#5

Om ordering har egenskapen auto_increment så behöver du inte göra någonting vid insert.

257 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)