Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
SELECT.. FOR UPDATE - Wie abbrechen wenn kein Update nötig ?? [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
SELECT.. FOR UPDATE - Wie abbrechen wenn kein Update nötig ??


 
smoop
07-04-2005, 14:26 
 
Hi!
Habe eine transaktionssichere Mysql/InnoDB die über php angesprochen wird.

Meine Frage: Wenn ich mit einem:
"select * from sonstwas where x=1 for update"

die zeile des selects sperre und in der weiteren auswertung feststelle das kein update nötig ist, wie hebe ich die sperre wieder auf ?
bis jetzt mach ich das einfach mit einem mysqli_rollback($sql),
weiß aber nicht ob das so korrekt ist.

wenn ein update der zeile erforderlich ist, wird mittels commit die sache ja abgeschlossen..

für erklärende Worte bedanke ich mich schon mal im Vorraus!
thx, mfg, smoop

 
Arni
07-04-2005, 14:29 
 
sollte es sich nicht aut. nach der Abfrage wieder aufheben.
Bin mir da nicht ganz sicher, da ich es noch nie probiert habe, aber ich denke mal das sich die Sperrung nach der Abfrage autom. wieder aufheben sollte :rolleyes:

 
smoop
07-04-2005, 14:41 
 
Nunja. autocommit ist logischer weise vor der select.. for update ausgeschalten. dementsprechend müsste die zeile(n) die durch das select berührt werden bis zum nächsten commit gesperrt sein...

Soweit meine Theorie zur Sache. Aber würde mich über ne praktische Sicht zur Problematik freuen ;)

thx @ all, mfg, smoop

 
smoop
09-04-2005, 00:15 
 
Keiner ne Idee ??

 
Günni
09-04-2005, 08:13 
 
Also, soweit ich das noch in erinnerung habe ist es wirklich so, dass die Datensätze bis zum nächsten DDL, Commit oder Rollback Befehl gesperrt sind. Wieso überprüfst du nicht schon vorher ob du die Daten überhaupt sperren brauchst???

 
smoop
09-04-2005, 19:46 
 
Thx Günni!

Ich seh schon, dass ich hier um ne Versuchsreihe nicht drumrum komme...

Zu deinem Vorschlag, zu prüfen ob ich die daten sperren muss...

Wie sollte das gehen?
Ist ja schließlich net vorher zu sehen ob grad jemand auf die Datensätze zugreift bei einem Multiuser-system !??

thx, smoop


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