phpbar.de logo

Mailinglisten-Archive

AW: Datensatz / Tabellen Sperre

AW: Datensatz / Tabellen Sperre

Andreas Honnerlage MySql at honnerlage.de
Die Feb 18 21:41:25 CET 2003


Hallo Katja,

der Datensatz bleibt bis zum Release gesperrt.
Wenn Du vergisst, die Sperre aufzuheben, bis zum nächsten Neustart des
MySQL-Servers.
Vielleicht solltest Du regelmäßig die Tables flushen (Flush Tables), dann
werden meines
Wissens auch alle Sperren gelöscht...
Allerdings weiß ich das nicht genau, habe mich auch nie eingelesen.

Andreas

-----Ursprüngliche Nachricht-----
Von: Katja May [mailto:katja at delphiclub.de]
Gesendet: Dienstag, 18. Februar 2003 20:59
An: mysql-de at lists.4t2.com
Betreff: Re: Datensatz / Tabellen Sperre


Hallo Andreas,

erst ein mal Danke, es funktioniert jetzt !
Wenn der Datensatz bereits gesperrt ist, wie kann ich ermitteln wie lange
das noch so sein wird ? Der Kunde wünscht minimalen Netzwerkverkehr !


Katja

----- Original Message -----
From: "Andreas Honnerlage" <MySql at honnerlage.de>
To: <mysql-de at lists.4t2.com>
Sent: Tuesday, February 18, 2003 7:50 PM
Subject: AW: Datensatz / Tabellen Sperre


Hallo Katja,

es gibt die Funktionen Get_Lock und Release_Lock.

Du kannst folgendermaßen vorgehen.
Zuerst schickst Du dem Server ein "Select Get_Lock(5900,0)"
Er wird entweder mit 1 oder 0 antworten.
Bei 1 hast Du den Lock bekommen und kannst den Datensatz aufrufen.
Bei 0 ist der Datensatz schon gesperrt.

Zuerst zum Syntax:
Get_Lock fordert vom Server die Bestätigung, daß kein weitere User oder
keine Instanz
einen Get_Lock angefordert hat, der denselben Wert hatte.
Dabei kommt es nicht darauf an, was Du dem Server für einen Wert schickst,
sondern nur, daß er absolut eindeutig ist für Deinen Datensatz.

Select Get_Lock ('Müller,Jan,Essen',0) wäre ebenfalls OK.
Danach weiß deine Anwendung, daß sie diesen Datensatz aufrufen kann und daß
ihr Zugriff exklusiv ist.
Get_Lock verhindert nicht das Aufrufen dieses Datensatzes. Auch das
Zurückschreiben, verändern, löschen usw. wird in keiner Weise verhindert.

Hinter dem Komma [Get_Lock(5900,0)] steht die Anzahl der Millisekunden, die
der Server darauf warten soll, das Lock zu erhalten.
Dementsprechend muß auch Deine Anwendung auf die Antwort warten.

Nachdem der Datensatz abgeschlossen ist, solltest Du nicht vergessen, ein
Select Release_Lock(5900) zu schicken, damit der Server diese ID wieder
anderweitig vergeben kann.

Viel Erfolg..

Andreas


-----Ursprüngliche Nachricht-----
Von: Katja May [mailto:katja at delphiclub.de]
Gesendet: Dienstag, 18. Februar 2003 19:21
An: mysql-de at lists.4t2.com
Betreff: Datensatz / Tabellen Sperre


Hallo Liste,

Ich würde gern wissen wie ich eine Datensatzsperre einrichten kann ? oder
ist das nicht möglich ?
Es gibt PHP Clients und Clients in C (Admin (Linux) und Remote mit lokaler
Kopie der MySQL-DB (Windows)). Beim Update des Servers treten div. Probleme
auf.
Oder ist das schlechtes Datenbankdesign ?
Ich wäre für jeden Tip dankbar !

Katja



--
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->>  http://www.4t2.com/mysql

--
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->>  http://www.4t2.com/mysql




--
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->>  http://www.4t2.com/mysql

-- 
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->>  http://www.4t2.com/mysql 


php::bar PHP Wiki   -   Listenarchive