radering i mysql

Tråden skapades och har fått 6 svar. Det senaste inlägget skrevs .
1
  • Oregistrerad
  • 2004-06-10 15:19

Har en tabell där första kolumnen är av typen "id" som håller reda på var raden finns i tabellen (AUTO_INCREMENT).

Om jag raderar sista raden i tabellen och sedan skapar en ny rad så stämmer ej "id-numereringen". Dvs om jag tar bort rad med id=5 och lägger till en ny rad får denna id=6 (borde vara samma problem om man tar bort en rad mitt i).

Finns det något PHP-kommando eller sql-anrop som råder bot på problemet?

  • Oregistrerad
  • 2004-06-10 16:02

är det verkligen ett problem? vill du byta innehållet i en rad med ett visst id kan du använda UPDATE

  • Medlem
  • Stockholm
  • 2004-06-10 16:27

auto_increment gör att varje post får unikt id, så när det är förbrukat är det förbrukat och kommer aldrig åter igen

Gör som Leloy säger istället, byt innehållet bara med en update.

  • Medlem
  • Stockholm
  • 2004-06-10 16:32

Läste lite i manualen, det borde vara så att den får id=5, kanske man måste avsluta kopplingen till mysql och starta den på nytt innan man för in den nya, ingen aning. Vet inte om det sparas någon info om tabellen någonstans som håller i värdet för fältet.

Edit: Läste lite mer. Det borde fungera som du vill om du avslutar databaskopplingen och öppnar den igen innan du sätter in den nya raden.

Enligt dokumentationen så beror det på vilken typ av tabell det är: "If you delete the row containing the maximum value for an AUTO_INCREMENT column, the value will be reused for an ISAM or BDB table, but not for a MyISAM or InnoDB table."

Sedan bör det påpekas att om du ska göra en massa delete från tabellen så är kanske inte AUTO_INCREMENT någon bra lösning.

Joakim

  • Oregistrerad
  • 2004-06-11 15:32

varför är det så hemskt om man får gap mellan id:na? det spelar egentligen ingen roll eftersom det vanligtvis bara används för indetifering och "relationer" mellan tabeller/rader. så om id ständigt ändras när rader tas bort kommer det bli mer eller mindre kaos i databasen

om man nu absolut vill "återställa" det så finns det någon variant på ALTER TABLE, men jag hittar inte den konkreta syntaxen i manunalen vid en snabb sökning tyvärr..

1
Bevaka tråden