fk: SQL, Bubble mit SQL

Beitrag lesen

Um nun zwei Produkte auszutauschen muss man ja "nur" die Sortierschlüssel austauschen.
Wie macht man das am effektivsten?

das hatten wir doch letztens schon einmal.
2 schlüssel s1 + s2. jeder schlüssel darf nur einmal vorkommen:

update tabelle set s = (s1+s2)-s
where s in (s1, s2)

Allerdings ist bei einem geschlossenen Nummernkreis das Tauschen mit nur einem Statement möglich. Zwei einzelne voneinander abhängige Updates müsste man durch ein Lock binden, was die Performance im konkurrierenden Betrieb beinträchtigt.

der nummernkreis ist egal

Gibt es eine Möglichkeit, ein update-Statement nur dann ausführen zu lassen, wenn die Menge der davon betroffenen Datensätze mit einer Vorgabe übereinstimmt? Also durch ein where-statement wird eine Elementemenge gefiltert, die dann dem Update unterzogen werden soll. Das darf aber nur dann geschehen, wenn z.B. genau 2 Datensätze in den Filterbereich fallen.

nicht direkt, sondern nur als subselect in der bedingung.
aber man kann zuvor einen select count absetzen und dann den update machen.