# mysql und transaktionen...



## DP (9. Aug 2004)

hallo,

da ich hier zum ersten mal mit mysql arbeite, habe ich folgende frage:

ich habe viele table-updates vom typ

*UPDATE TAB1 SET SPALTE1 = (SPALTE1 - X);*

kann ich das mit einem einfachen statement machen oder kommt der da durcheinander mit der berechnung, wenn ein paar tausend updates auf einmal erfolgen?

danke


----------



## nollario (9. Aug 2004)

der kommt nicht durcheinander... problem ist aber: wenn du selbst nicht für transaktions management sorgst, wenn alle updates ausgeführt, in der reihenfolge in der sie das dbms erhält... und wenn die ausführung deiner updates in einer bestimmten reihenfolge geschehen soll hast du gelitten....

umgehen kannst du das in java, indem du 
	
	
	
	





```
setAutoCommit
```
 der connection auf false setzt und mittels 
	
	
	
	





```
commit
```
 und 
	
	
	
	





```
rollback
```
 die transaktion manuell steuerst.


----------



## DP (9. Aug 2004)

alles klar. vielen dank.

also angenommen tausende clients machen rein theoretisch im gleichen moment ein

*UPDATE TAB1 SET SPALTE1 = (SPALTE1 - X);*

dann stimmt am ende der wert in spalte1?

dann ist ja alles paletti. der soll hier nur bestände addieren und subtrahieren. da ist mir die reihenfolge egal...

vielen dank, nollario!


----------



## nollario (9. Aug 2004)

innerhalb eines updates ist die transaktion gewährleistet nach dem ACID prinzip... vielleicht postet du noch etwas mehr über dein programm und den spalteninhalt


----------



## DP (9. Aug 2004)

also ich bin hier gerade an einer lagerverwaltung zu gange. 

in der spalte steht der aktuelle artikelbestand als long.

wenn benutzer nun bestellungen löschen, ändern etc. muss der bestand aktualisiert werden.

also läuft auf die spalte immer ein + oder minus von sich selbst...


----------



## nollario (9. Aug 2004)

wenn mich nicht alles täuscht, sollte es gehen


----------



## DP (9. Aug 2004)

okay, ich werde meinem cheffe im falle einer panne sagen, dass nollario sich getäuscht hat und ich deshalb alle schuld von mir weise 

thx a lot!


----------



## Grizzly (9. Aug 2004)

DP hat gesagt.:
			
		

> hallo,
> 
> da ich hier zum ersten mal mit mysql arbeite, habe ich folgende frage:
> 
> ...


In diesem Fall ist es nicht wichtig, da es sich nur um eine Tabelle handelt, aber ich sage es lieber schon mal im voraus:
Aber MySQL kann (zumindest in der Standard Version) keine Transaktionen (wie bspw. DB2 und Oracle).


----------



## nollario (10. Aug 2004)

MySql unterstützt auch Transaktionen in der Standard Version. Man muss allerdings auf den Tabellen Typen achten:

http://www.linux-magazin.de/Artikel/ausgabe/2001/08/mysql/mysql.html


----------

