dedlfix: count Datensatz um eines erhöhen, mysql

Beitrag lesen

Hi!

$sql =  "select count from tabelle WHERE id=1";

mysql_query("UPDATE tabelle SET count='$count' WHERE id=1");


> Jetzt meine FRage, kann man das nicht einfach und komapakter machen, vieleicht mit nur einer Befehlskette in MYSQL?  
  
Nicht nur "kann" sondern sogar "muss", denn in der jetzigen Form hast du ein Nebenläufigkeitsproblem.  
  
Ein Prozess kommt an das Select, stellt beispielsweise eine 5 fest, denkt kurz nach, und stellt fest, dass er nun da eine 6 reinschreiben muss. In dieser Zeit kommt ein zweiter Prozess und bekommt über das Select auch eine 5, denkt kurz nach, und stellt fest, dass er eine 6 reinschreiben muss. In dieser Zeit hat der erste Prozess ausgedacht und schreibt seine 6 rein. Der zweite ist nun ebenfalls fertig und schreibt auch seine 6 rein.  
  
Das "UPDATE SET feld = feld + 1" ist hingegen ein atomarer Prozess. Das DBMS lässt sich bei dessen Ausführen nicht von anderen Anfragen stören, die müssen sich hinten anstellen.  
  
  
Lo!