JetUpdate-Funktion

Gilt für: Windows | Windows Server

JetUpdate-Funktion

Die JetUpdate-Funktion führt einen Aktualisierungsvorgang aus, einschließlich des Einfügens einer neuen Zeile in eine Tabelle oder aktualisieren einer vorhandenen Zeile. Das Löschen einer Tabellenzeile erfolgt durch Aufrufen von JetDelete.

JetUpdate ist der letzte Schritt beim Ausführen einer Einfügung oder eines Updates. Das Update wird gestartet, indem JetPrepareUpdate aufgerufen wird und dann jetSetColumn oder JetSetColumns mehrmals aufgerufen wird, um den Datensatzstatus festzulegen. Schließlich wird JetUpdate aufgerufen, um den Updatevorgang abzuschließen. Indizes werden nur von JetUpdate oder JetUpdate2 und nicht während JetSetColumns oder JetSetColumns aktualisiert.

    JET_ERR JET_API JetUpdate(
      __in          JET_SESID sesid,
      __in          JET_TABLEID tableid,
      __out_opt     void* pvBookmark,
      __in          unsigned long cbBookmark,
      __out_opt     unsigned long* pcbActual
    );

Parameter

sesid

Die Sitzung, die für diesen Aufruf verwendet werden soll.

tableid

Der Cursor, der für diesen Aufruf verwendet werden soll.

pvBookmark

Zeiger auf ein zurückgegebenes Lesezeichen für eine eingefügte Zeile.

cbBookmark

Größe des Puffers, auf den pvBookmark verweist.

pcbActual

Die zurückgegebene Größe des Lesezeichens für die eingefügte Zeile, die in pvBookmark zurückgegeben wird.

Rückgabewert

Diese Funktion gibt den Datentyp JET_ERR 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_errBufferTooSmall

Der angegebene Puffer für das Datensatzlesezeichen ist nicht ausreichend groß genug, um das Datensatzlesezeichen zu speichern.

JET_errClientRequestToStopJetService

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

JET_errColumnIllegalNull

Identisch mit JET_errNullInvalid.

JET_errDiskFull

Der Aktualisierungsvorgang erfordert das Wachstum der Datenbankdatei oder die Protokolldateizuordnung, aber das Laufwerk, auf dem sich die Datenbankdatei oder Protokollreihe befindet, ist voll. Alternativ befindet sich die Datenbankdatei auf einem FAT32-formatierten Volume, und die Datenbankdatei ist bereits 4 GB groß, das Limit pro Datei für FAT32.

JET_errInstanceUnavailable

Es ist nicht möglich, den Vorgang abzuschließen, da für die instance, die 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.

Windows XP: Dieser Fehler wird nur von Windows XP und späteren Versionen zurückgegeben.

JET_errInvalidParameter

Der angegebene Prep-Parameter in der JetPrepareUpdate-Funktion ist kein gültiges Flag.

JET_errKeyDuplicate

Ein Indexschlüssel für diesen Datensatz ist ein Duplikat eines anderen Indexschlüssels für einen anderen Datensatz, der bereits in der Tabelle enthalten ist, und der Index lässt keine Duplikate zu.

JET_errKeyTruncated

Der eingefügte oder aktualisierte Datensatz verfügt über einen oder mehrere Indizes, für die der generierte Schlüssel die maximal zulässige Größe überschritten hätte. Daher konnte der Vorgang das Abschneiden von Schlüsseln nicht verhindern.

JET_errMultiValuedIndexViolation

Der eingefügte oder aktualisierte Datensatz verfügt über eine indizierte mehrwertige Spalte mit zwei oder mehr Werten, die innerhalb der für den Index festgelegten Schlüsselgröße für die maximale Länge identisch sind. Daher enthält der Datensatz zwei identische Einträge im Index, der ungültig ist.

JET_errNotInitialized

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

JET_errNullInvalid

Eine oder mehrere Spalten im einzufügenden Datensatz oder im aktualisierten Zustand eines datensatzes, der ersetzt wird, ist NULL , was gegen die definierte Einschränkung für diese Spalten verstößt.

JET_errNullKeyDisallowed

Mindestens ein Indizes ist so definiert, dass ein NULL-Schlüssel nicht zugelassen wird, und der eingefügte oder aktualisierte Zustand eines ersetzten Datensatzes verstößt gegen diese definierte Einschränkung.

JET_errRecordPrimaryChanged

Bei einem Datensatzersetzungsvorgang wurde der Primärschlüssel aktualisiert. Updates zu Primärschlüsselspalten muss durch Löschen des vorhandenen Datensatzes und Einfügen eines neuen Datensatzes mit den gewünschten Daten erfolgen.

JET_errRestoreInProgress

Es ist nicht möglich, den Vorgang abzuschließen, da ein Wiederherstellungsvorgang für die instance ausgeführt wird, die der Sitzung zugeordnet ist.

JET_errSessionSharingViolation

Dieselbe Sitzung kann nicht für mehrere Threads gleichzeitig verwendet werden.

Windows XP: Dieser Fehler wird nur von Windows XP und späteren Versionen zurückgegeben.

JET_errTermInProgress

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

JET_errTransReadOnly

Es ist unzulässig, eine Aktualisierung zu versuchen, wenn sich der Bereich einer schreibgeschützten Transaktion befindet. Eine schreibgeschützte Transaktion ist eine Transaktion, die mithilfe eines Aufrufs von JetBeginTransaction2 mit JET_bitTransactionReadOnly gestartet wurde.

Windows XP: Dieser Fehler wird nur von Windows XP und späteren Versionen zurückgegeben.

JET_errUpdateNotPrepared

JetPrepareUpdate wurde mit JET_prepCancel aufgerufen, aber der Cursor befand sich nicht im vorbereiteten Zustand.

JET_errVersionStoreOutOfMemory

Der Vorgang ist fehlgeschlagen, weil nicht genügend Arbeitsspeicher vorhanden ist, um Transaktionsinformationen zum Update beizubehalten.

JET_errWriteConflict

Eine andere Sitzung hat den Datensatz zuvor für das Update gesperrt. Das update, das von dieser Sitzung versucht wird, schlägt fehl.

Bei erfolgreicher Ausführung wird der Vorgang zum Öffnen der Aktualisierung auf dem Cursor abgeschlossen. Wenn eine automatische Inkrementspalte für die Tabelle definiert ist, wird dieser Wert für eingefügte Datensätze festgelegt. Wenn eine Versionsspalte für die Tabelle definiert ist, wird ihr Wert für neu eingefügte Datensätze initialisiert oder bei jedem Ersetzen eines Datensatzes inkrementiert. Alle Indizes, einschließlich gruppierter und nicht gruppierter Indizes, werden aktualisiert.

Bei einem Fehler werden keine Änderungen an der Datenbank vorgenommen. Vor dem Einfügen und vor dem Ersetzen wurden möglicherweise Rückruffunktionen aufgerufen, aber nach dem Einfügen und nach dem Ersetzen wurden keine Rückrufe aufgerufen, da letztere nicht dazu führen können, dass ein Update fehlschlägt. Der Cursorkopierpuffer verbleibt im vorbereiteten Zustand, sodass die Möglichkeit besteht, die Probleme, die Fehler verursacht haben, inkrementell zu beheben und den Aktualisierungsvorgang erneut zu versuchen.

Bemerkungen

Rückruffunktionen können registriert werden, um vor oder nach dem Einfügen und vor oder nach dem Update aufgerufen zu werden.

Einschränkungen der Datensatzgröße werden von JetSetColumn und nicht im Allgemeinen von JetUpdate erzwungen.

Es ist wichtig, die Auswirkungen der Ausführung 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 die Parallelitätssteuerung mit mehreren Versionen zu unterstützen, die von der Datenbank-Engine verwendet wird, um Transaktionen mit Momentaufnahme Isolation zu unterstützen. Nachdem 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 die Rückholung dieser Ressourcen zu ermöglichen. 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
JetDelete
JetPrepareUpdate
JetRegisterCallback
JetRetrieveColumn
JetRetrieveColumns
JetSetColumn
JetSetColumns
JetSetSystemParameter
Systemparameter