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 in einer 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 den möglichen ESE-Fehlern finden Sie unter Extensible Storage Engine Errors and Error Handling Parameters.
Rückgabecode |
Beschreibung |
|---|---|
JET_errSuccess |
Der Vorgang wurde erfolgreich abgeschlossen. |
JET_errCallbackFailed |
Die Rückruffunktion ist in irgendeiner Weise fehlgeschlagen. Beispielsweise werden Zugriffsverletzungen in Rückruffunktionen erfasst und in JET_errCallbackFailed. Dieser Fehler wird nur von xp Windows und höher zurückgegeben. |
JET_errClientRequestToStopJetService |
Es ist nicht möglich, den Vorgang abschließen, da alle Aktivitäten auf der -Instanz, die der Sitzung zugeordnet ist, aufgrund eines Aufrufs von JetStopService beendet wurden. |
JET_errIllegalOperation |
Der durch tableid angegebene Cursor unterstützt das Löschen nicht. Weitere Informationen finden Sie im Abschnitt mit den Hinweisen. |
JET_errInstanceUnavailable |
Der Vorgang kann nicht abgeschlossen werden, da für die der Sitzung zugeordnete Instanz 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 xp Windows und späteren Versionen zurückgegeben. |
JET_errNoCurrentRecord |
Der durch tableid angegebene Cursor befindet sich nicht in einem Datensatz. |
JET_errNotInitialized |
Der Vorgang kann nicht abgeschlossen werden, da die der Sitzung zugeordnete Instanz noch nicht initialisiert wurde. |
JET_errRestoreInProgress |
Der Vorgang kann nicht abgeschlossen werden, da ein Wiederherstellungsvorgang für die -Instanz durchgeführt wird, die der Sitzung zugeordnet ist. |
JET_errPermissionDenied |
Die Datenbank-Engine verfügt nicht über ausreichende Berechtigungen zum Löschen des Datensatzes. Dies kann passieren, wenn die Datenbankdatei mit schreibgeschützten Zugriff geöffnet wurde. |
JET_errRollbackError |
Ein Updatepuffer (siehe JetPrepareUpdate) ist vorhanden, aber nicht für alle Änderungen, die an Spalten vom Typ JET_coltypLongText und/oder Spalten des Typs JET_coltypLongBinary vorgenommen wurden, kann ein Rollback ausgeführt werden. |
JET_errSessionSharingViolation |
Es ist unzulässig, dieselbe Sitzung von mehr als einem Thread gleichzeitig zu verwenden. Dieser Fehler wird nur von xp Windows und späteren Versionen zurückgegeben. |
JET_errTermInProgress |
Der Vorgang kann nicht abgeschlossen werden, da die der Sitzung zugeordnete Instanz heruntergefahren wird. |
JET_errTransReadOnly |
Die Transaktion ist eine schreibgeschützte Transaktion und unterstützt keine Löschungen. |
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 das Update gesperrt. Das von dieser Sitzung versuchte Update ist fehlgeschlagen. |
Bei Erfolg bleibt die Währung direkt vor dem nächsten Datensatz. Wenn der gelöschte Datensatz der letzte in der Tabelle war, bleibt die Währung am Ende der Tabelle (d. h. 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 wird (mit 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),kann der Updatepuffer zurückgesetzt werden.
Hinweise
Nicht alle Tabellen unterstützen das Löschen von Zeilen. Eine temporäre Tabelle unterstützt normalerweise nicht das Löschen von Zeilen. Das Löschen von Datensätzen kann für temporäre Tabellen aus vielen Gründen aktiviert werden. Einige davon sind:
JET_bitTTUpdatable wurde während der Erstellung angegeben.
Große temporäre Tabellen können das Löschen unterstützen, wenn sie mit einem JET_bitTTScrollable oder JET_bitTTIndexed. Der Schwellenwert, bei dem eine temporäre Tabelle "groß" wird, beträgt derzeit 64 KB, kann aber in zukünftigen Versionen 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 Aktualisierungsvorgä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, die von allen aktiven Transaktionen angezeigt werden können. Diese Versionen werden verwendet, um die Parallelitätssteuerung mit mehreren Versionen zu unterstützen, die von der Datenbank-Engine verwendet wird, um Transaktionen mithilfe der Momentaufnahmeisolation zu unterstützen. Sobald die Datenbank-Engine die zum Speichern dieser Versionen verwendeten Ressourcen ausgeschöpft hat, kann sie keine weiteren Änderungen mehr akzeptieren, bis einige Transaktionen abgeschlossen sind, um das Wiederverlangen dieser Ressourcen zu ermöglichen. Wenn sich die Engine in diesem Zustand befindet, werden alle Updates mit JET_errVersionStoreOutOfMemory. Die für die Datenbank-Engine verfügbaren Ressourcen zum Speichern dieser Versionen können mit JetSetSystemParameter mit JET_paramMaxVerPages und JET_paramGlobalMinVerPages.
Anforderungen
| | |
Client
|Erfordert Windows Vista, Windows XP oder Windows 2000 Professional.
| |Server
|Erfordert Windows Server 2008, Windows Server 2003 oder Windows 2000 Server.
| |Header
|Wird in Esent.h deklariert.
| |Bibliothek
|Verwenden Sie ESENT.lib.
| |DLL
|Erfordert ESENT.dll.
|Weitere Informationen
JET_ERR
JET_SESID
JET_TABLEID
JetOpenTempTable
JetPrepareUpdate
Systemparameter