Just nu i M3-nätverket
Jump to content

auto_increment


hasseo

Recommended Posts

Hej!

En fråga från en nybörjare på MySql. Jag har en kolumn i en tabell som jag kallar "id" och där jag har satt atributet auto_increment. Nu har jag märkt att om jag tar bort en post ur tabellen så försvinner det "automatiska nummret" också.

 

Om man nu istället vill att de poster som finns kvar skall hoppa efter ett steg så att man inte "tappar" några nummer, hur gör man då?

 

tackar på forehand/H

 

[inlägget ändrat 2002-09-01 21:53:11 av hasseo]

Link to comment
Share on other sites

Jag tror inte det går. Iallafall inte på något smidigt sätt. Eftersom man ofta använder id-kolumnen för relationer så blir det väldigt krångligt.

 

Tänk dig att du har en tabell med 100 poster där id går från 1-100 och varje post är relaterad till i snitt två poster i en annan tabell.

 

Om du då tar bort säg rad 50 så ska alltså alla rader hoppa ett steg? Det innebär att du samtidigt måste uppdatera 2 poster per rad i den relaterade tabellen.

 

Bästa lösningen om du nu ändå av någon anledning vill att varje nummer ska användas är väl isåfall att skapa en ytterligare kolumn som inte har med relationerna att göra som du uppdaterar när du tar bort en post. Men jag tror inte du kan få MySQL att göra det själv utan du får göra något anrop från ditt program/webbsida som loopar igenom och uppdaterar, men det är ju inget vidare om du har många poster.

 

Märker att jag mest flummat och inte givit något riktigt svar på din fråga mer än att jag inte tror att det går.

Hoppas det hjälper något iallafall.

 

/Niklas

 

 

Link to comment
Share on other sites

Vill du använda ID som radnummer kan du göra på det här sättet

 

DELETE FROM tabell WHERE id = rad

UPDATE tabell SET id = id - 1 WHERE id > rad

 

Fast då kan du inte använda auto_increment. Du får istället ta reda på det högsta ID-nummret (med SELECT MAX(id) FROM tabell t.ex.) när du lägger till en ny rad.

 

 

 

 

- Swey

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...