Vinzenz Mai: SELECT @c := @c + 1

Beitrag lesen

Hallo Tom,

SET @c := 0;

UPDATE  structure SET  d3 = ( SELECT IF(structure.d2=0, @c := 0, @c := @c + 1) )
ORDER BY d0 , 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