Vinnaren i pepparkakshustävlingen!
2009-12-29, 21:11
  #1
Medlem
AndreasMs avatar
Håller tummarna för att jag kan formulera mig rätt nu.

Har sökt efter hjälp utan resultat. Pysslar med ett system där jag tillåter användaren att radera bitar av innehållet i en databas. Problemet jag har är att jag sorterar innehållet efter dess ID, och när användaren raderar en rad så blir det då ett "glapp" i ID-följden.

Åh, herregud vad jag förklarar illa.

Nåväl, om jag t.ex. har en kolumn som sorteras efter ID, och så tar jag bort raden där ID = 3, då glappar det mellan ID=2 och ID=4.

Det jag antar att jag söker är en mysql-funktion eller liknande som uppdaterar kolumnen "ID" och pushar upp alla rader så att om man sorterar efter ID så ordnas de 1,2,3,4...igen.

Någon som kan hjälpa en stackars sate?

Tack på förhand!

Andreas
Citera
2009-12-29, 21:16
  #2
Medlem
Wobins avatar
Citat:
Ursprungligen postat av AndreasM
Håller tummarna för att jag kan formulera mig rätt nu.

Har sökt efter hjälp utan resultat. Pysslar med ett system där jag tillåter användaren att radera bitar av innehållet i en databas. Problemet jag har är att jag sorterar innehållet efter dess ID, och när användaren raderar en rad så blir det då ett "glapp" i ID-följden.

Åh, herregud vad jag förklarar illa.

Nåväl, om jag t.ex. har en kolumn som sorteras efter ID, och så tar jag bort raden där ID = 3, då glappar det mellan ID=2 och ID=4.

Det jag antar att jag söker är en mysql-funktion eller liknande som uppdaterar kolumnen "ID" och pushar upp alla rader så att om man sorterar efter ID så ordnas de 1,2,3,4...igen.

Någon som kan hjälpa en stackars sate?

Tack på förhand!

Andreas

DELETE FROM table WHERE id = $inputID;
UPDATE table SET id = id - 1 WHERE id > $inputID;

Vet inte om syntaxen stämmer helt och hållet, men bör vara den principen. Går också att lägga in en trigger på delete som ordnar detta.
Citera
2009-12-29, 21:33
  #3
Medlem
Citat:
Ursprungligen postat av Wobin
DELETE FROM table WHERE id = $inputID;
UPDATE table SET id = id - 1 WHERE id > $inputID;

Vet inte om syntaxen stämmer helt och hållet, men bör vara den principen. Går också att lägga in en trigger på delete som ordnar detta.

Ovanstående fungerar så länge ID-kolumnen inte är en identitetskolumn. Dessa kan inte uppdateras på ovanstående sätt, utan kräver mer krångel.

Till TS: spelar "glappet" i ID-följden någon roll när du sorterar? Jag kan inte direkt se nåt fall där detta skulle vara fallet, men jag vet ju å andra sidan inte hur din lösning är tänkt att fungera.
Citera
2009-12-29, 22:25
  #4
Medlem
AndreasMs avatar
Stort tack för era svar.

Det är en identitetskolumn det rör sig om. Bör jag tänka om och lägga till en ny kolumn eller går det att lösa ändå?

Glappet påverkar inte själva sorteringen, nej. Men vid presentation av datan så gör glappet sig tydligt. Det kanske är lättast att lägga till en ny kolumn, men jag vill ha auto_increment vilket är precis så ID-kolumnen uppträder.

Som sagt, behöver jag tänka om så tar jag mer än gärna emot förslag!
Citera
2009-12-29, 23:07
  #5
Moderator
Protons avatar
Citat:
Ursprungligen postat av AndreasM
Stort tack för era svar.

Det är en identitetskolumn det rör sig om. Bör jag tänka om och lägga till en ny kolumn eller går det att lösa ändå?

Glappet påverkar inte själva sorteringen, nej. Men vid presentation av datan så gör glappet sig tydligt. Det kanske är lättast att lägga till en ny kolumn, men jag vill ha auto_increment vilket är precis så ID-kolumnen uppträder.

Som sagt, behöver jag tänka om så tar jag mer än gärna emot förslag!
Vad e det för kass presentation som förlitar sej på id? Ett id ska du ju normalt aldrig behöva ändra på, speciellt inte om det ugör primärnyckel i en tabell. Du kan ju tänka dej själv vilken röra det skulle kunna bli om du har en tabell där du har den där nyckeln, som dessutom är en främmande nyckel i en annan tabell, då måste du ju uppdatera bägge ställesna samtidigt, gör du inte det lär du få stora problem framöver. Låt det vara å hitta ett bättre sätt att rita ut det på är mitt tips.
Citera
2009-12-29, 23:36
  #6
Medlem
Precis som Proton säger så bör du nog tänka ut en annan lösning. Att uppdatera primärnycklar är a big nono, en hint om detta är det faktum att det helt enkelt inte är möjligt utan att slå av primärnyckelkopplingen till kolumnen.

Behöver du verkligen visa primärnyckeln i gränssnittet? Ge gärna lite mer info om vad du vill åstadkomma så kanske jag kan komma med mer specifika råd.
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback