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