mysql gleichzeitiger zugriff
Hallo Leute
eine eher simple mySQL Datenbank soll erstellt werden, auf welche man mittels php zugreift. (kleine Kunden-Datenbank)
es sollen alle mitarbeiter darauf zugreifen und änderungen vornehmen.
jetzt, wie muss ich das lösen, wenn zwei mitarbeiter gleichzeitig auf einen kunden zugreifen und etwas ändern wollen?
ist das in mysql möglich, wenn ja, was muss ich mir genauer anschauen?
Danke & Gruss
eine eher simple mySQL Datenbank soll erstellt werden, auf welche man mittels php zugreift. (kleine Kunden-Datenbank)
es sollen alle mitarbeiter darauf zugreifen und änderungen vornehmen.
jetzt, wie muss ich das lösen, wenn zwei mitarbeiter gleichzeitig auf einen kunden zugreifen und etwas ändern wollen?
ist das in mysql möglich, wenn ja, was muss ich mir genauer anschauen?
Danke & Gruss
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 109110
Url: https://administrator.de/contentid/109110
Ausgedruckt am: 14.11.2024 um 23:11 Uhr
6 Kommentare
Neuester Kommentar
auf einen und den selben Datensatz einer Tabelle kann man meines wissens nicht gleichzeitig zugreifen. wenn die Kundeninformationen aus mehreren Datensätzen verschiedener Tabellen bestellen sollte das kein Problem sein, aber wie gesagt... ein und der selber Datensatz kann nicht gleichzeitig von mehreren geändert werden.
Hallo,
Hierzu bietet eine Datenbank auch keine Lösung, dass muss auf Applikationsebene gelöst werden.
Ansatz: du fügst der Tabelle mit den Kundendaten eine Spalte Lock hinzu, am besten als Datetime. Wenn ein Bearbeiter eine Seite mit Kundendaten öffnet, so wird hier der aktuelle Zeitpunkt eingetragen. Versucht ein Bearbeiter eine Seite zu öffnen, auf der für den Kunden schon ein Lock hinterlegt ist, so bekommt er eine Fehlermeldung. Wenn der (erste) Bearbeiter die Seite wieder schließt, so wird das Lock entfernt, andere können sie wieder verwenden. Problem ist das Erkennen des "schließens". Wenn der Bearbeiter einfach den Browser schließt, dann bekommt der Server davon nichts mit, das Lock bleibt erhalten. Daher als DateTime ausführen: Locks, die älter als x Minuten sind werden dann einfach gelöscht/überschrieben.
Noch eleganter ist das, wenn man mit PHP-Sessions arbeitet, und das Lock beim Timeout der Session entfernt - aber da bin ich bei PHP überfragt ob das überhaupt unterstützt wird (es müsste eine Aktion ohne Laden einer Seite ausgeführt werden), in asp.net wüßte ich es...
Gruß
Filipp
auf einen und den selben Datensatz einer Tabelle kann man meines
wissens nicht gleichzeitig zugreifen.
Doch, genau da liegt ja das Problem. Wenn zwei Leute versuchen eine Word-Datei von einem Netzwerkshare zu öffnen, so bekommt der zweite eine entsprechende (Fehler-)Meldung. Wenn aus der DB einer die Kundendaten öffnet, so wird durch MySQL kein Lock erzeugt. Der zweite kann sie auch öffnen, dann speichern beide, und einer überschreibt die Änderungen des anderen.wissens nicht gleichzeitig zugreifen.
Hierzu bietet eine Datenbank auch keine Lösung, dass muss auf Applikationsebene gelöst werden.
Ansatz: du fügst der Tabelle mit den Kundendaten eine Spalte Lock hinzu, am besten als Datetime. Wenn ein Bearbeiter eine Seite mit Kundendaten öffnet, so wird hier der aktuelle Zeitpunkt eingetragen. Versucht ein Bearbeiter eine Seite zu öffnen, auf der für den Kunden schon ein Lock hinterlegt ist, so bekommt er eine Fehlermeldung. Wenn der (erste) Bearbeiter die Seite wieder schließt, so wird das Lock entfernt, andere können sie wieder verwenden. Problem ist das Erkennen des "schließens". Wenn der Bearbeiter einfach den Browser schließt, dann bekommt der Server davon nichts mit, das Lock bleibt erhalten. Daher als DateTime ausführen: Locks, die älter als x Minuten sind werden dann einfach gelöscht/überschrieben.
Noch eleganter ist das, wenn man mit PHP-Sessions arbeitet, und das Lock beim Timeout der Session entfernt - aber da bin ich bei PHP überfragt ob das überhaupt unterstützt wird (es müsste eine Aktion ohne Laden einer Seite ausgeführt werden), in asp.net wüßte ich es...
Gruß
Filipp
Zitat von @filippg:
Hallo,
> auf einen und den selben Datensatz einer Tabelle kann man
meines
> wissens nicht gleichzeitig zugreifen.
Doch, genau da liegt ja das Problem.
Hallo,
> auf einen und den selben Datensatz einer Tabelle kann man
meines
> wissens nicht gleichzeitig zugreifen.
Doch, genau da liegt ja das Problem.
jaaah, hab mich warscheinlich undeutlich ausgedrückt, ich meinte damit ja eigentlich auch, das man den Datensatz nicht parallel bearbeiten kann.... also bei mir ist es so, dass ich eine mysql datenbank an access angebunden habe, und da kommt beim zeitgleichen bearbeitet denn halt beim aktualisieren ein Fenster, dass in der zwischenzeit der datensatz bearbeitet wurde, und was ich jetzt tun will...