Hallo, <br>
ich suche eine Inspriation um folgende Problematik gelungen(?) abzubilden.<br>
System:
=-=-=-=<br>
MS SQL 2000
Windows Server 2003<br>
Problem:
=-=-=-=<br>
In einer Datenbank dürfen bestimmte Datensätze jeweils nur von einem Benutzer bearbeitet werden. Andere Benutzer dürfen den Datensatz dann nur ansehen. Dies gilt solange, bis der erste Benutzer den Datensatz wieder verlässt oder ggf. speichert.<br>
Beispiel:
=-=-=-=<br>
User1 greift auf Datensatz1 zu. Der Datensatz wird für alle anderen Benutzer nur noch "lesend" zugänglich. Wird der Datensatz1 von User1 verlassen, kann der Datensatz wieder von einem anderen Benutzer bearbeitet (lesend u. schreibend) bearbeitet werden.
Der schreibende Zugriff gilt also für den ersten Benutzer, der den Datensatz wieder öffnet oder neu anfordert.<br>
Lösungsvariante:
=-=-=-=-=-=-=-=<br>
Eine Lösungsvariante die ich mir vorgestellt habe war, dies über eine separate Tabelle zu lösen. In der Tabelle würden die derzeit bearbeiteten (schreibener Zugriff) Datensätze mit ihren PK_IDs und den jeweiligen Benutzern hinterlegt.<br>
Schwäche:
=-=-=-=-=<br>
Bei obiger Variante sehe ich aber folgende Problem:
- Anderen Benutzer müssten den Datensatz erneut abfragen um zu erfahren ob der Datensatz wieder freigegeben wurde.
- Sollte der Client die Verbindung abbrechen (abstürzen) ohne, dass der Code für die Freigabe des Datensatzes erfolgt, wäre dieser solange gesperrt bis der User sich am System neu anmeldet und das Programm die Säuberung vornimmt.
(Dieses Problem könnte eventuell durch einen Trigger in der DB oder einer Routine vom Server, die beim Logout des Clients ausgelöst würde, gelöst werden).
<br>
Vielleicht hat einer von euch eine gute Idee oder schon Erfahrung mit dieser Problematik. <br>
Danke
ich suche eine Inspriation um folgende Problematik gelungen(?) abzubilden.<br>
System:
=-=-=-=<br>
MS SQL 2000
Windows Server 2003<br>
Problem:
=-=-=-=<br>
In einer Datenbank dürfen bestimmte Datensätze jeweils nur von einem Benutzer bearbeitet werden. Andere Benutzer dürfen den Datensatz dann nur ansehen. Dies gilt solange, bis der erste Benutzer den Datensatz wieder verlässt oder ggf. speichert.<br>
Beispiel:
=-=-=-=<br>
User1 greift auf Datensatz1 zu. Der Datensatz wird für alle anderen Benutzer nur noch "lesend" zugänglich. Wird der Datensatz1 von User1 verlassen, kann der Datensatz wieder von einem anderen Benutzer bearbeitet (lesend u. schreibend) bearbeitet werden.
Der schreibende Zugriff gilt also für den ersten Benutzer, der den Datensatz wieder öffnet oder neu anfordert.<br>
Lösungsvariante:
=-=-=-=-=-=-=-=<br>
Eine Lösungsvariante die ich mir vorgestellt habe war, dies über eine separate Tabelle zu lösen. In der Tabelle würden die derzeit bearbeiteten (schreibener Zugriff) Datensätze mit ihren PK_IDs und den jeweiligen Benutzern hinterlegt.<br>
Schwäche:
=-=-=-=-=<br>
Bei obiger Variante sehe ich aber folgende Problem:
- Anderen Benutzer müssten den Datensatz erneut abfragen um zu erfahren ob der Datensatz wieder freigegeben wurde.
- Sollte der Client die Verbindung abbrechen (abstürzen) ohne, dass der Code für die Freigabe des Datensatzes erfolgt, wäre dieser solange gesperrt bis der User sich am System neu anmeldet und das Programm die Säuberung vornimmt.
(Dieses Problem könnte eventuell durch einen Trigger in der DB oder einer Routine vom Server, die beim Logout des Clients ausgelöst würde, gelöst werden).
<br>
Vielleicht hat einer von euch eine gute Idee oder schon Erfahrung mit dieser Problematik. <br>
Danke
Comment