Ik heb een tabel met een unieke index op de velden (user_id, type, number) en op (user_id, type, team_id).
Daar staan bijvoorbeeld de volgende waarden in:
(user_id, type, number, team_id)
(1, 1, 1, 1)
(1, 1, 2, 2)

Nu wil ik dat team_id 1 number 2 krijgt en team_id 2 number 1. De numbers moeten dus wisselen. Hoe kan ik dit doen?

Ik dacht dat het met de volgende query zou moeten lukken:

UPDATE table SET number = CASE team_id WHEN 1 THEN 2 WHEN 2 THEN 1 END WHERE user_id = 1 AND type = 1


Maar hier krijg ik een Duplicate entry error.

Hoe dit op te lossen?
Ger van Steenderen op 11/06/2013 16:48:06

Simpel:
UPDATE IGNORE

Ik krijg nu alleen geen foutmelding meer, maar er veranderd niets in de tabel. Terwijl de query volgens mij wel goed is. Anders krijg ik toch ook geen Duplicate entry error?
Klopt mijn fout, was even iets te snel met reageren. Ignore zorgt ervoor dat de er niks gebeurd
Heb je een bijzondere reden om op die manier die indexen in de tabel tabel te hebben, je kan bv ook een unique index op het alle kolommen maken, dan heb je dat probleem niet.
Anders zal je gewoon 2 queries moeten maken.

Reageren