Hallo Tom,
SET @c := 0;
UPDATE
structureSETd3= ( SELECT IF(structure.d2=0, @c := 0, @c := @c + 1) )
ORDER BYd0,d1,d2,d3;
>
> Dazu müsste man jetzt wissen, ob zwischen das (Sub-)Select und das Update andere Queries anderer Prozesse dazwischen passen,
nein, natürlich nicht. Es ist \*ein\* UPDATE.
> oder ob die beiden atomar gebunden sind.
Ja. Sonst könntest Du alle Subselects in INSERT, UPDATE oder DELETE in die Tonne treten. Siehe dazu <http://dev.mysql.com/doc/refman/5.0/en/locking-issues.html>.
Freundliche Grüße
Vinzenz