6e854442cd2a940c9e95941dce4ad598: Zeilen auf/ab bewegen

Beitrag lesen

das problem ist, das 2 sätze geändert werden müssen.

bei einem abbruch des scriptes führt dies natürlich zu inkonsistenz.

daher muß man (my)sql dazu bewegen, beide sätze in einer query zu ändern.

gegenben sei eine spalte 'Position', welche die stelle markiert,
'P1' und 'P2' als die zu tauschenden positionen.

um 2 sätze zu aktualisieren, muß das WHERE kriterium 2 sätze als resultset liefern:  WHERE Position IN (P1, P2)

um jeweils den anderen inhalt in die db zu stellen, bietet sich an, die summe der beiden P's als modulo mit der momentanen P zu nehmen:

UPDATE tabelle SET Position = MOD(P1+P2, Position)

da P1 und P2 in php als variablen stehen, muß es dann heißen:

UPDATE tabelle SET Position = MOD($P1+$P2, Position)
WHERE Position IN ($P1, $P2)

ob das konkurrierende update auch ohne commit möglich ist, müßte noch untersucht werden.