Ich habe eine Tabelle ‚Spiel‘ wieaktualisiert eine Zeile, wenn sonst existiert einfügen
id|user1|user2|paired
--+-----+-----+--------+
1 |U_1 |null |false
Ich muß einen Datensatz einen neuen Benutzer ‚U_2‘ passen, wo gepaart = false, oder einen neuen Eintrag in der Tabelle erstellen wenn keine ungepaarte Zeile gefunden wird.
Diese db ist mit einem Server verbunden, wo mehrere Benutzer versuchen, gepaart zu werden, so muss ich die bestmögliche Lösung finden, die es schnell macht, so dass es die Tabelle nicht lange blockiert.
die Lösung kam ich mit war
int matchId = select id from match where ((user1 != 'U_2') AND (paired = false));
if(matchId > 0)
then
update table match set user2 = 'U_2' where id = matchId;
else
insert new row.
Bitte einen besseren Weg vorschlagen.
Vielen Dank im Voraus.
Ihre vorhandene Lösung sieht gut aus mir. Das sieht sehr einfach aus. Sehen Sie hier ein spezifisches Leistungsproblem? – worpet
danke für die Antwort. Ich wollte wissen, ob es einen Teigweg dafür gibt. Wenn Sie in einer sehr großen Tabelle nachsehen, wird die Antwortzeit möglicherweise um 2 Mal erhöht. Und es gibt auch die Möglichkeit, dass 2 oder mehr Benutzer dieselbe ID von der ersten Abfrage erhalten. und dann könnten sie am Ende die gleiche Zeile aktualisieren. –