tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
1
ZUGRIFFE
402
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Kona Kona ist offline Mitglied Silber
    Registriert seit
    Nov 2004
    Beiträge
    55
    Hallo zusammen,

    ich versuche gerade, in MySQL Transaktionen und Sperrmechanismen zu nutzen. Ich stehe nun vor folgendem Problem:

    In einem Browserfenster bzw. Tab habe ich über meine kleine PHP-Anwendung einen Datensatz zum Ändern selektiert

    Code :
    1
    
    SELECT * FROM fieldcat WHERE lfdnr = '1' LOCK IN SHARE MODE;
    Damit dachte ich aus meinen bisherigen Recherchen, sei ein Datensatz bei einer InnoDB-Tabelle mit einer S-Sperre versehen, weswegen er nicht geändert werden kann. Also phpMyAdmin gestartet und denselben Datensatz angefasst:
    Code :
    1
    
    UPDATE fieldcat SET readonly = '1' WHERE lfdnr = '1';
    Ich erwartete eine Fehlermeldung von phpMyAdmin, bekam aber keine. Ein Refresh des Browsers zeigte mir dann auch, dass die Änderung durchgeführt wurde. Ich hatte hier aber erwartet, dass durch die S-Sperre genau dies nicht möglich ist.

    Also habe ich es damit versucht, in dem ich eine Transaktion gestartet habe.
    Code :
    1
    2
    3
    
    SET AUTOCOMMIT = 0;
    START TRANSACTION;
    SELECT * FROM fieldcat WHERE lfdnr='1' IN SHARE MODE;
    Ich habe wieder den Datensatz mit dem UPDATE-Statement angefasst und wieder keine Fehlermeldung erhalten, obwohl ich die Transaktion nicht explizit committed hatte.

    Mache ich etwas falsch oder habe ich die Funktionsweise der Sperren und Transaktionen bei InnoDB-Tabellen nicht richtig verstanden?

    Ich will nochmal kurz zusammenfassen, was ich machen möchte:
    Ich möchte einen Datensatz über meine Weboberfläche selektieren und bei dieser Selektion bereits die Sperre in der Datenbank setzen, sodass andere Benutzer nur noch lesend zugreifen können. Dies würde ich jedoch gern mit den in MySQL eingebauten Mechanismen erreichen.

    Danke schonmal für eure Hilfe.
     

  2. #2
    Registriert seit
    Jun 2002
    Ort
    Saarbrücken (Saarland)
    Beiträge
    9.886
    Blog-Einträge
    29
    Hallo,

    laut:
    http://lists.mysql.com/mysql-de/1224
    http://lists.mysql.com/mysql-de/1223
    http://dev.mysql.com/doc/refman/5.0/...ing-reads.html

    funktioniert das mit InnoDB nur wenn auf der Tabelle ein Primärschlüssel definiert ist und dieser
    verwendet wird in der select for ... verwendet wird.

    Gruß Tom
     
    Java rocks!
    How to become a good Java Programmer?
    Does IT in Java and .Net
    The only valid measurement of code quality: WTFs / minute
    Blog
    Xing
    Twitter

Ähnliche Themen

  1. Checkbox setzen und sperren
    Von Thomas_Jung im Forum Javascript & Ajax
    Antworten: 6
    Letzter Beitrag: 01.12.09, 10:56
  2. Ordnerrechte richtig setzen!
    Von QUEST08 im Forum PHP
    Antworten: 3
    Letzter Beitrag: 13.08.08, 09:04
  3. if Befehl richtig setzen.
    Von PHP-Fan im Forum PHP
    Antworten: 3
    Letzter Beitrag: 25.10.05, 07:54
  4. Quellpunkt richtig setzen ( Kopierstempel )
    Von Heizemusik im Forum Photoshop
    Antworten: 2
    Letzter Beitrag: 23.08.05, 12:42
  5. Chmod richtig setzen?
    Von StefanR im Forum PHP
    Antworten: 8
    Letzter Beitrag: 30.01.04, 17:09

Stichworte