JetDelete-Funktion

Gilt für: Windows | Windows Server

JetDelete-Funktion

Die JetDelete-Funktion löscht den aktuellen Datensatz in einer Datenbanktabelle.

    JET_ERR JET_API JetDelete(
      __in          JET_SESID sesid,
      __in          JET_TABLEID tableid
    );

Parameter

sesid

Der Datenbanksitzungskontext, der für den API-Aufruf verwendet wird.

tableid

Der Cursor für eine Datenbanktabelle. Die aktuelle Zeile wird gelöscht.

Rückgabewert

Diese Funktion gibt den JET_ERR-Datentyp mit einem der folgenden Rückgabecodes zurück. Weitere Informationen zu möglichen ESE-Fehlern finden Sie unter Erweiterbare Speichermodulfehler und Fehlerbehandlungsparameter.

Rückgabecode

Beschreibung

JET_errSuccess

Der Vorgang wurde erfolgreich abgeschlossen.

JET_errCallbackFailed

Bei der Rückruffunktion ist ein Fehler aufgetreten. Beispielsweise werden Zugriffsverletzungen in Rückruffunktionen abgefangen und in JET_errCallbackFailed übersetzt. Dieser Fehler wird nur von Windows XP und höher zurückgegeben.

JET_errClientRequestToStopJetService

Es ist nicht möglich, den Vorgang abzuschließen, da alle Aktivitäten auf dem instance, die der Sitzung zugeordnet sind, aufgrund eines Aufrufs von JetStopService beendet wurden.

JET_errIllegalOperation

Der von tableid angegebene Cursor unterstützt das Löschen nicht. Weitere Informationen finden Sie im Abschnitt mit den Hinweisen.

JET_errInstanceUnavailable

Es ist nicht möglich, den Vorgang abzuschließen, da beim instance, der der Sitzung zugeordnet ist, ein schwerwiegender Fehler aufgetreten ist, der erfordert, dass der Zugriff auf alle Daten widerrufen wird, um die Integrität dieser Daten zu schützen. Dieser Fehler wird nur von Windows XP und höheren Versionen zurückgegeben.

JET_errNoCurrentRecord

Der durch tableid angegebene Cursor befindet sich nicht in einem Datensatz.

JET_errNotInitialized

Es ist nicht möglich, den Vorgang abzuschließen, da die der Sitzung zugeordnete instance noch nicht initialisiert wurde.

JET_errRestoreInProgress

Es ist nicht möglich, den Vorgang abzuschließen, da auf dem der Sitzung zugeordneten instance ein Wiederherstellungsvorgang ausgeführt wird.

JET_errPermissionDenied

Die Datenbank-Engine verfügt nicht über ausreichende Berechtigungen zum Löschen des Datensatzes. Dies kann vorkommen, wenn die Datenbankdatei mit schreibgeschütztem Zugriff geöffnet wurde.

JET_errRollbackError

Ein Updatepuffer (siehe JetPrepareUpdate) ist vorhanden, aber nicht alle Änderungen, die an Spalten vom Typ JET_coltypLongText und/oder Spalten des Typs JET_coltypLongBinary vorgenommen wurden, konnten zurückgesetzt werden.

JET_errSessionSharingViolation

Es ist unzulässig, dieselbe Sitzung aus mehr als einem Thread gleichzeitig zu verwenden. Dieser Fehler wird nur von Windows XP und höheren Versionen zurückgegeben.

JET_errTermInProgress

Es ist nicht möglich, den Vorgang abzuschließen, da die der Sitzung zugeordnete instance heruntergefahren wird.

JET_errTransReadOnly

Die Transaktion ist eine schreibgeschützte Transaktion und unterstützt keine Löschvorgänge.

JET_errVersionStoreOutOfMemory

Fehler beim Vorgang, da nicht genügend Arbeitsspeicher vorhanden ist, um Transaktionsinformationen zum Update zu speichern.

JET_errWriteConflict

Eine andere Sitzung hat den Datensatz zuvor für die Aktualisierung gesperrt. Das von dieser Sitzung versuchte Update schlägt fehl.

Bei Erfolg wird die Währung kurz vor dem nächsten Datensatz verlassen. Wenn der gelöschte Datensatz der letzte in der Tabelle war, bleibt die Währung am Ende der Tabelle (also nach dem neuen letzten Datensatz). Wenn der gelöschte Datensatz der einzige Datensatz in der Tabelle war, wird die Währung auf den Anfang festgelegt.

Die entsprechenden Indizes werden automatisch aktualisiert.

Wenn ein Update vorbereitet ist (mithilfe von JetPrepareUpdate), wird es abgebrochen. Der Updatepuffer wird zurückgesetzt.

Bei Einem Ausfall bleibt die Währung unverändert. Wenn ein Update vorbereitet ist (siehe JetPrepareUpdate), wird der Updatepuffer möglicherweise zurückgesetzt.

Bemerkungen

Nicht alle Tabellen unterstützen das Löschen von Zeilen. Eine temporäre Tabelle unterstützt normalerweise das Löschen von Zeilen nicht. Das Löschen von Datensätzen kann für temporäre Tabellen aus vielen Gründen aktiviert werden, unter anderem:

  • JET_bitTTUpdatable wurde während der Erstellung angegeben.

  • Große temporäre Tabellen können das Löschen unterstützen, wenn sie mit JET_bitTTScrollable oder JET_bitTTIndexed erstellt wurden. Der Schwellenwert, ab dem eine temporäre Tabelle "groß" wird, beträgt derzeit 64 KB, kann jedoch in zukünftigen Releases geändert werden.

Windows XP und höher. Rückruffunktionen können von JetDelete aufgerufen werden, einschließlich JET_cbtypBeforeDelete und JET_cbtypAfterDelete.

Es ist wichtig, die Auswirkungen einer großen Anzahl von Updatevorgängen innerhalb einer einzelnen Transaktion zu verstehen. Jedes Update der Datenbank muss von der Datenbank-Engine im Versionsspeicher nachverfolgt werden. Der Versionsspeicher enthält einen Livedatensatz aller verschiedenen Versionen jedes Datensatzes oder Indexeintrags in der Datenbank, der von allen aktiven Transaktionen angezeigt werden kann. Diese Versionen werden verwendet, um das mehrversionsfähige Parallelitätssteuerelement zu unterstützen, das von der Datenbank-Engine verwendet wird, um Transaktionen mit Momentaufnahme Isolation zu unterstützen. Nachdem die Datenbank-Engine die Ressourcen zum Speichern dieser Versionen erschöpft hat, kann sie keine weiteren Änderungen mehr akzeptieren, bis einige Transaktionen abgeschlossen sind, damit diese Ressourcen zurückgewonnen werden können. Wenn sich die Engine in diesem Zustand befindet, schlagen alle Updates mit JET_errVersionStoreOutOfMemory fehl. Die Ressourcen, die der Datenbank-Engine zum Speichern dieser Versionen zur Verfügung stehen, können mithilfe von JetSetSystemParameter mit JET_paramMaxVerPages und JET_paramGlobalMinVerPages gesteuert werden.

Anforderungen

Anforderung Wert

Client

Erfordert Windows Vista, Windows XP oder Windows 2000 Professional.

Server

Erfordert Windows Server 2008, Windows Server 2003 oder Windows 2000 Server.

Kopfzeile

Deklariert in Esent.h.

Bibliothek

Verwenden Sie ESENT.lib.

DLL

Erfordert ESENT.dll.

Weitere Informationen

JET_ERR
JET_SESID
JET_TABLEID
JetOpenTempTable
JetPrepareUpdate
Systemparameter