[PHP: MySQL]Duplicate error by updaten tabel

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hoi

Wanneer ik een query run die er zo uitziet:
PHP:
1
$query->query("Update forums set fid=fid+1 where fid > 4");


maar dan geeft ie een error: 'Duplicate entry '6' for key 1' omdat hij de fid(autoincrement maar geen unique id) van de eerste record dat ie tegenkomt op 6 wil zetten maar dan ziet ie dat die all bestaat en geeft ie dus een error.

Ik heb in de mysql docu gekeken en daar stond een workaround die luidde als volgt:
PHP:
1
$query->query("Update forums set fid=fid+1 where fid+0 > 4");


Maar dat helpt ook niet.

Ik zou dan die 4 kunnen veranderen in de laatste id van de tabel maar dan heb ik 2 querys nodig want dan moet hij die laatste id( + 1) terug aftrekken waarvoor ik dus 3 querys zou nodig hebben in plaats van 1.

Acties:
  • 0 Henk 'm!

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 02-09 11:02

D2k

je kan autoincrement niet met de hand aanpassen
jij doet nu
id query
5 > 5+1 =6 ------------->
6 > boem bestaat al

error

Doet iets met Cloud (MS/IBM)


Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

autoincrement is alleen voor primary keys, dus per definitie unieke id.

En autoincrement primary keys moet je niet gaan zitten updaten. 's Onzin

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

  • Goodielover
  • Registratie: November 2001
  • Laatst online: 16-09 09:38

Goodielover

Only The Best is Good Enough.

Als je toch een update wilt doen, kan je eerst bijvoorbeeld alles wat je wilt verplaatsen een negatief ID geven om dan in een tweede update de eigenlijke nieuwe waarden te geven.
Maar de vorige posters hebben gelijk een auto-incremement veld wil je niet updaten.
Kan je misschien aangeven wat je probleem is, ipv de mogelijk oplossing hier te posten?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Wel, ik ben bezig (samen) met iem anders een forum aant proggen, die query gebruik ik om een forum of category in de forums tabel te zetten, maar wannneer de admin een forum add moet dat direct op de jjuiste plaats in de tabel komen. Zo heb ik maar een query nodig op de index om de forums /categorieën te laten zien, omdat ze al in de juiste volgorde staan.

Acties:
  • 0 Henk 'm!

  • Goodielover
  • Registratie: November 2001
  • Laatst online: 16-09 09:38

Goodielover

Only The Best is Good Enough.

Dan is het beter om een volgorde veld op te nemen ipv de ID daarvoor te gebruiken.
Bij dit veld kan je dan mijn update strategie gebruiken of een pakt een decimale number en je middelt de waarde van de twee forum's waar de nieuwe tussen geplaatst moet worden.

Acties:
  • 0 Henk 'm!

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 14:14

Crazy D

I think we should take a look.

Goodielover schreef op 13 November 2002 @ 14:57:
Dan is het beter om een volgorde veld op te nemen ipv de ID daarvoor te gebruiken.
Bij dit veld kan je dan mijn update strategie gebruiken of een pakt een decimale number en je middelt de waarde van de twee forum's waar de nieuwe tussen geplaatst moet worden.
Een decimaal id lijkt me niet zo practisch, dan heb je sraks geen /14 maar /14,123638464 :D
Een volgorde-veldje lijkt me het meest logische, en imho het duidelijkste.

Exact expert nodig?


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
hmmm ok, alles werkt nu maar de auto_increment order is niet meer gerespecteerd, dat geeft eigenlijk niet, dan zet ik gewoon een sort by bij m'n selectiequery op m'n indexpagina. de fid is eigenlijk een soort volgorde kolomwant:

fid=1 Category 1
fid=2 Forum1
fid=3 Forum2
fid=4 Category 2
fid=5 Forum1
enz..

Thnx iedereen voor hulp.
Pagina: 1