Thomas Schmieder: SQL: Bedingtes Update durchführen?

Beitrag lesen

Hallo,

ich habe eine Tabelle B, in der Unterpositionen zu einer anderen A eingetragen werden.

Die Unterpositionen werden über eine eigene Positionsnummer sortiert.

ID_A  | ergeben zusammen den Sortierschlüssel
POS   |

ID_A       POS
-------- --------
1        1
1        2
1        3
3        2
3        5
3        6

So ungefähr könnte die Tabelle nach einigen Bewegungen aussehen.

Nun will ich möglichst mit einem einzigen SQL-Statement festestellen, ob ich vor der ID_A=1, POS=2 eine neue Position einfügen kann. Hierzu müsste ja vorher Platzgeschaffen werden, also ein Update ( "POS=POS+1" )auf die POS >= 2, die zu ID_A gehören.

Das soll aber nur dann passieren, wenn POS=2 überhaupt vorhanden ist, denn sonst könnte sie ja sowieso belegt werden.

Gibt es nun eine Möglichkeit, das in einem SQL-Statement zu verpacken?

Zweite Frage
------------
Muss ich die Tabelle für das Update locken oder lässt MySQL während meiner Aktion sowieso niemand ran? Da ja hinterher auf jeden Fall noch ein Insert auf die gefundene/geschaffene Lücke kommt, wäre locken wohl ratsamer, oder?

Liebe Grüße aus http://www.braunschweig.de

Tom

--
Intelligenz ist die Fähigkeit, aus Fehlern Anderer zu lernen und Mut die, eigene zu machen.