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
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:
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.
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.
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:
SELECT * FROM fieldcat WHERE lfdnr = '1' LOCK IN SHARE MODE;
Code:
UPDATE fieldcat SET readonly = '1' WHERE lfdnr = '1';
Also habe ich es damit versucht, in dem ich eine Transaktion gestartet habe.
Code:
SET AUTOCOMMIT = 0;
START TRANSACTION;
SELECT * FROM fieldcat WHERE lfdnr='1' IN SHARE MODE;
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.