php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
zweiten bzw. paralelen editier aufruf blockieren


 
rossixx
20-01-2010, 17:38 
 
hallo,

wenn ich ein teil meiner datenbank aufrufe und diesen teil der tabelle editieren will, also ein editscript aufrufe,

könnte ein weiterer paraleler aufruf des selben eintrags zu komplikationen führen.

kann man das unterbinden. ich glaube bei oracle gab es da einen möglichkeit, das der datensatz gespeert war, wenn einer edit aufgerufen hat.

gibt es sowas auch unter mysql. oder wie kann man grundsätzlich sowas blockieren ?!

oder muß ich in der db eine tmp tabelle einrichten und darüber blockieren:

z.b. if id of table in tmp_edit, dann bitte warten....

danke und schönen tag noch

 
AmicaNoctis
20-01-2010, 18:09 
 
Hallo,

du kannst Transaktionen benutzen, aber auch Tabellen oder einzelne Datensätze locken. Da solltest du aber das Handbuch konsultieren, weil es mehrere Möglichkeiten gibt und es keinen Sinn macht, das jetzt hier im Forum nochmal durchzukauen. Bei konkreten Fragen helfen wir gerne.

Gruß,

Amica

 
rossixx
20-01-2010, 18:15 
 
Dankeschön.

werd mir gleich mal die Transaktionen reinziehen:

Eine kleine MySQL-Referenz (PHP-Tutorial) (http://www.usegroup.de/software/phptutorial/eine_kleine_mysql-referenz.html#transaktionen)

haaaaaaaaaaaaa,

sind alles MyISAM Tabellen und nur InnoDB unterstützen Transaktionen :-(

andere Lösung ???

 
Kropff
20-01-2010, 19:53 
 
LOCK TABLES
Dafür musst du aber die entsprechenden Rechte haben. Ist nicht bei jedem Provider selbstverständlich.

Peter

 
AmicaNoctis
20-01-2010, 19:59 
 
Wenn alles nicht hilft, versiehst du das Update-Statement mit einer Where-Klausel, die alle Spalten gegenprüft. Wenn der Datensatz zwischenzeitlich geändert wurde, wird das Update gar nicht erst ausgeführt. Anhand der affected_rows-Anzahl kannst du dann den Benutzer entsprechend informieren und ggf. die lokale Kopie auffrischen.

Gruß,

Amica

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 18:31 Uhr.