webForumDet fria alternativet

Ta reda på nästa id i en tabell

Databaser & SQL

6 svar · 589 visningar · startad av pakmannen

Medlem sedan dec. 2002227 inlägg
Frågan#1

Hej!

mysql_insert_id() kan ju användas för att ta reda på det senast skapade id:t i en auto increment kolumn. Jag skulle behöva göra det motsatta, alltså ta reda på vilket id som kommer att skapas vid nästa INSERT.

Det verkar inte gå att lita på att ta senaste id:t och lägga till ett eftersom när något tas bort ur tabellen verkar inte det påverka uppräkningen av id kolumnen. (Någon som vet om man kan ändra detta?)

Jag "skulle" ju kunna INSERT en rad, notera id:t, lägga till ett, och sedan ta bort raden igen, men det känns som en väldigt jobbig lösning. Finns det inte något annat bra sätt att åstadkomma samma sak?

Medlem sedan mars 20025 907 inlägg
#2

Jag skulle påstå att det inte går, läs av numret i efterhand istället!
Tråden flyttas från PHP-forumet.

Medlem sedan juni 20034 013 inlägg
#3

There is always a way... och Google brukar känna till den. Jag visste faktiskt inte heller om det innan, men så här gör man:

SHOW TABLE STATUS LIKE 'tabellens_namn'

Och så läser du av kolumnen "Auto_increment".

Medlem sedan dec. 2002227 inlägg
#4

Heh, där ser man. Tyvärr har jag bara tillgång till MySQL 4 så det funkar inte. Jag tror jag skriver om koden en del istället, förmodligen enklare så. :)

Tack i alla fall!

Medlem sedan juni 20034 013 inlägg
#5

pakmannen skrev:

Tyvärr har jag bara tillgång till MySQL 4 så det funkar inte.

Jaså? Jag har bara tillgång till MySQL 3.

Medlem sedan dec. 2002227 inlägg
#6

Det stod väl på mySQL hemsidan att funktionen bara funkar i 5 och senare? Jag fick mysql_error när jag försökte köra "SHOW TABLE STATUS" i alla fall..

Medlem sedan juni 20034 013 inlägg
#7

pakmannen skrev:

Det stod väl på mySQL hemsidan att funktionen bara funkar i 5 och senare?

Nej, det står: "SHOW TABLE STATUS works likes SHOW TABLE, but provides a lot of information about each table. You can also get this list using the mysqlshow --status db_name command. This statement was added in MySQL 3.23."

pakmannen skrev:

Jag fick mysql_error när jag försökte köra "SHOW TABLE STATUS" i alla fall..

Då gör du nog något annat fel.

261 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)