AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Firebird: Wer "locked" meinen Record?
Thema durchsuchen
Ansicht
Themen-Optionen

Firebird: Wer "locked" meinen Record?

Offene Frage von "mschaefer"
Ein Thema von mschaefer · begonnen am 21. Nov 2007 · letzter Beitrag vom 22. Nov 2007
Antwort Antwort
Benutzerbild von mschaefer
mschaefer

Registriert seit: 4. Feb 2003
Ort: Hannover
2.029 Beiträge
 
Delphi XE3 Enterprise
 
#1

Firebird: Wer "locked" meinen Record?

  Alt 21. Nov 2007, 21:21
Datenbank: Firebird • Version: 2.0 • Zugriff über: egal
Recordlocking

In einen Multiusersystem mit pessimistiescher Transaktionssteuerung würde ich gerne anzeigen lassen wer gerade an einem gesperrten Datensatz arbeitet. Das er gesperrt ist bekommt man gut durch ein 'dummyUptdate' heraus, aber wer da gerade noch mit zwei Fingersystem und Moorhuhn in Nebentätigkeit an einem Record bastelt fehlt mir noch.

Grüße // Martin



PS: als offenen Frage markiert.
Martin Schaefer
Phaeno
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Firebird: Wer "locked" meinen Record?

  Alt 21. Nov 2007, 21:57
Müsste in einer Systemtabelle stehen.
Aber imho kann man in FireBird auf Locks verzichten
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von mschaefer
mschaefer

Registriert seit: 4. Feb 2003
Ort: Hannover
2.029 Beiträge
 
Delphi XE3 Enterprise
 
#3

Re: Firebird: Wer "locked" meinen Record?

  Alt 22. Nov 2007, 09:15
Moin, moin,

Ja Erfahrungsgemäß dauert das Bearbeiten der Datensätze durch den User doch etwas länger, Deshalb geht es letztlich um eine Art Anwenderinfo, wer da gerade dran ist. Die Idee war dies nur Abzufragen, wenn man explizit einen bestimmten Datensatz bearbeiten will. Zu Systemtabellen gibt es einige Beispiele für Abfragen auf FB - Systemtabellen. Informationen über Locks sind dort nicht zu finden.

Da diese Record oder Arealocks auch nur kurze Zeit bestehen können wird dies hochwahrscheinlich nicht in die Systemtabellen gespeichert, sondern nur im Speicher gehalten. Da fehlen mir derzeit Infos zur Debug-API, wo ich sowas Vermuten würde.

Grüße // Martin
Martin Schaefer
Phaeno
  Mit Zitat antworten Zitat
Benutzerbild von mschaefer
mschaefer

Registriert seit: 4. Feb 2003
Ort: Hannover
2.029 Beiträge
 
Delphi XE3 Enterprise
 
#4

Re: Firebird: Wer "locked" meinen Record?

  Alt 22. Nov 2007, 12:53
Zwischenfazit:

Über das DBMS scheint es da keinen Weg zu geben.
Bleibt also nur die Variante über Userdaten in der
aktuellen Tabelle. Der Ablauf wäre dann ca. folgender:

1.- Im Grid auf Basis einer ReadOnlyQuery wird ein Datensatz angeklickt.
2.- Versuch: Eintragen der IP oder des Usernamens in ein User_ID Feld in der Tabelle und posten.
3a. Fehlschlag: Datensatz gesperrt, dann exception und Record lesen um aktuellen Nutzer anzuzeigen.
3b. Erfolg: User eintragen, posten und daruf Edit für Recordbearbeitung. Post bei Abschluss.
4.- Detailansicht-Eende und Grid-Aufruf.

Na soweit im Groben // Martin
Martin Schaefer
Phaeno
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Firebird: Wer "locked" meinen Record?

  Alt 22. Nov 2007, 13:12
Du könntest auch mit benutzerdefinierten Kontextvariablen arbeiten
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von mschaefer
mschaefer

Registriert seit: 4. Feb 2003
Ort: Hannover
2.029 Beiträge
 
Delphi XE3 Enterprise
 
#6

Re: Firebird: Wer "locked" meinen Record?

  Alt 22. Nov 2007, 14:02
Zitat von mkinzler:
Du könntest auch mit benutzerdefinierten Kontextvariablen arbeiten
Mit was SP // Martin


PS: Wann schläfst Du eigenlich
Martin Schaefer
Phaeno
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Firebird: Wer "locked" meinen Record?

  Alt 22. Nov 2007, 14:08
http://derentwickler.de/itr/online_a...nodeid,56.html
Zitat:
PS: Wann schläfst Du eigenlich Wink
Nachts
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von mschaefer
mschaefer

Registriert seit: 4. Feb 2003
Ort: Hannover
2.029 Beiträge
 
Delphi XE3 Enterprise
 
#8

Re: Firebird: Wer "locked" meinen Record?

  Alt 22. Nov 2007, 19:20
Moin, Spätmoin

Ein Konzept bringe ich aktuell damit nicht auf den Weg. Jedenfalls sehe derzeit keinen Vorteil gegenüber einer eigenen Locktabelle wo Tabelle Datensatz und User sowie LockInZeit abgelegt sind (da gab es mal einen Entwickelr-Artikel). Das ich bisher nicht herausbekomme wer welche Transaktion eingeleitet hat macht die Sache nicht besser.

Grüße // Martin
Martin Schaefer
Phaeno
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:05 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz