Freigeben über


Recordset: Sperren von Datensätzen (ODBC)

Aktualisiert: November 2007

Dieses Thema bezieht sich auf die MFC-ODBC-Klassen.

In diesem Thema wird Folgendes erläutert:

  • Verschiedene Arten, einen Datensatz zu sperren.

  • Sperren von Datensätzen im Recordset während Aktualisierungen.

Wenn Sie mithilfe eines Recordsets einen Datensatz der Datenquelle aktualisieren, kann die Anwendung den Datensatz sperren, sodass kein anderer Benutzer den Datensatz gleichzeitig aktualisieren kann. Der Zustand eines Datensatzes, der von zwei Benutzern gleichzeitig aktualisiert wurde, ist nicht definiert, solange nicht sichergestellt ist, dass ein Datensatz nicht gleichzeitig von zwei Benutzern aktualisiert werden kann.

Hinweis:

Dieses Thema bezieht sich auf von CRecordset abgeleitete Objekte, in denen das gesammelte Abrufen von Zeilen nicht implementiert wurde. Falls Sie das gesammelte Abrufen von Zeilen einsetzen, treffen einige dieser Informationen nicht zu. Sie können z. B. nicht die Edit-Memberfunktion oder die Update-Memberfunktion aufrufen. Weitere Informationen über das gesammelte Abrufen von Zeilen finden Sie unter Recordset: Abrufen von Datensätzen in einer Sammeloperation (ODBC).

Sperrverhalten für Datensätze

Die Datenbankklassen stellen zwei Arten von Datensatz-Sperrverhalten bereit:

  • eingeschränktes Sperren (dies ist der Standard);

  • vollständiges Sperren.

Die Aktualisierung eines Datensatzes umfasst drei Schritte:

  1. Sie starten die Operation durch einen Aufruf der Edit-Memberfunktion.

  2. Sie ändern die gewünschten Felder des aktuellen Datensatzes.

  3. Sie beenden die Operation (und führen normalerweise einen Commit für die Aktualisierung aus), indem Sie die Update-Memberfunktion aufrufen.

Beim eingeschränkten Sperren wird der Datensatz in der Datenquelle nur während des Update-Aufrufs gesperrt. Wenn Sie das eingeschränkte Sperren in einer Mehrbenutzerumgebung verwenden, muss die Anwendung darauf vorbereitet sein, dass während des Update-Aufrufs eine Fehlerbedingung auftreten könnte. Beim vollständigen Sperren wird der Datensatz gesperrt, sobald Sie Edit aufrufen. Die Sperre wird erst wieder aufgehoben, wenn Sie Update aufrufen (Fehler werden über den CDBException-Mechanismus angezeigt, nicht durch Rückgabe von FALSE von Update). Das vollständige Sperren resultiert für andere Benutzer in manchen Fällen in einer Leistungseinbuße, da der Zugriff auf denselben Datensatz möglicherweise so lange verzögert werden muss, bis die Anwendung den Update-Prozess abgeschlossen hat.

Sperren von Datensätzen im Recordset

Um das standardmäßige Sperrverhalten eines Recordset-Objekts zu ändern, müssen Sie den Modus noch vor dem Aufruf von Edit ändern.

So ändern Sie das aktuelle Sperrverhalten für das Recordset

  • Rufen Sie die SetLockingMode-Memberfunktion auf, und übergeben Sie ihr entweder den Wert CRecordset::pessimistic oder CRecordset::optimistic.

Das neue Sperrverhalten wird angewendet, bis Sie es erneut ändern oder bis das Recordset geschlossen wird.

Hinweis:

Derzeit wird das vollständige Sperren nur durch verhältnismäßig wenige ODBC-Treiber unterstützt.

Siehe auch

Konzepte

Recordset (ODBC)

Recordset: Ausführen einer Verknüpfung (ODBC)

Recordset: Hinzufügen, Aktualisieren und Löschen von Datensätzen (ODBC)