JetUpdate2-Funktion

Gilt für: Windows | Windows Server

JetUpdate2-Funktion

Die JetUpdate2-Funktion führt einen Aktualisierungsvorgang aus, einschließlich einfügen einer neuen Zeile in eine Tabelle oder Aktualisieren einer vorhandenen Zeile. Diese Funktion enthält eine Liste von Grbitoptionen, die beim Ausführen eines Updates festgelegt werden können. Das Löschen einer Tabellenzeile erfolgt durch Aufrufen von JetDelete.

Windows Server 2003: JetUpdate2 wird in Windows Server 2003 eingeführt.

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

    JET_ERR JET_API JetUpdate2(
      __in          JET_SESID sesid,
      __in          JET_TABLEID tableid,
      __out_opt     void* pvBookmark,
      __in          unsigned long cbBookmark,
      __out_opt     unsigned long* pcbActual,
      __in            const JET_GRBIT grbit
    );

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 von pvBookmark gezeigt wird.

actual

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

grbit

Eine Gruppe von Bits, die die für diesen Aufruf zu verwendenden Optionen enthalten, die 0 (null) oder mehr der folgenden Elemente enthalten.

Wert

Bedeutung

JET_bitUpdateCheckESE97Compatibility

Dieses Flag bewirkt, dass das Update einen Fehler zurückgibt, wenn das Update in der Windows 2000-Version von ESE nicht möglich gewesen wäre, die eine kleinere maximale Anzahl von mehrwertigen Spalteninstanzen in jedem Datensatz erzwungen hat als höhere Versionen von ESE. Dies ist nur für Anwendungen wichtig, die Daten zwischen Anwendungen replizieren möchten, die auf Windows 2000 gehostet werden, und Anwendungen, die auf Windows Server 2003 oder höher von ESE gehostet werden. Dies sollte für die meisten Anwendungen nicht erforderlich sein.

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_errBufferTooSmall

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

JET_errClientRequestToStopJetService

Es ist nicht möglich, den Vorgang abzuschließen, da alle Aktivitäten auf der Instanz, die der Sitzung zugeordnet ist, als Ergebnis eines Aufrufs von JetStopServiceaufgetreten sind.

JET_errDiskFull

Für den Updatevorgang ist eine Vergrößerung der Datenbankdatei oder eine Protokolldateizuordnung erforderlich, 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 auf 4 GB festgelegt. Dies ist der Grenzwert pro Datei für FAT32.

JET_errInstanceUnavailable

Es ist nicht möglich, den Vorgang abzuschließen, da für die instanz, 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 sich bereits in der Tabelle befindet, 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 Mehrwertspalte mit zwei oder mehr Werten, die innerhalb der für den Index festgelegten Schlüsselgröße der maximalen Länge identisch sind. Daher weist der Datensatz zwei identische Einträge im Index auf, die ungültig sind.

JET_errNotInitialized

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

JET_errNullInvalid

Mindestens eine Spalte im einzufügenden Datensatz oder im aktualisierten Zustand eines zu ersetzenden Datensatzes ist NULL, was gegen die definierte Einschränkung für diese Spalten verstößt.

JET_errNullKeyDisallowed

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

JET_errRecordPrimaryChanged

Durch einen Datensatzersetzungsvorgang wurde der Primärschlüssel aktualisiert. Aktualisierungen an Primärschlüsselspalten müssen 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 Instanz 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 Instanz heruntergefahren wird.

JET_errUpdateNotPrepared

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

JET_errWriteConflict

Ein Datensatzersetzungsvorgang, für den noch keine Schreibsperre zugeordnet wurde, kann zum Zeitpunkt der Aktualisierung auf einen Schreibkonflikt stoßen.

Bei Erfolg wird der Vorgang zum Öffnen des Updates für den Cursor abgeschlossen. Wenn für die Tabelle eine Spalte mit automatischem Inkrement 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 jedes Mal erhöht, wenn ein Datensatz ersetzt wird. Alle Indizes, einschließlich gruppierter und nicht gruppierter Indizes, werden aktualisiert.

Bei einem Fehler werden keineRlei Ä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 rückrufe nicht aufgerufen, da letzteres nicht dazu führen kann, dass ein Update fehlschlägt. Der Cursorkopierpuffer befindet sich im vorbereiteten Zustand, sodass die Möglichkeit besteht, die Probleme, die Fehler verursacht haben, inkrementell zu beheben und den Updatevorgang zu wiederholen.

Bemerkungen

Einschränkungen der Datensatzgröße werden von JetSetColumnerzwungen, nicht im Allgemeinen durch JetUpdate. Die einzige Ausnahme ist, wenn das JET_bitUpdateCheckESE97Compatibility-Kompatibilitätsflag verwendet wird. In diesem Fall wird der gesamte Datensatz überprüft, da ein einzelner JetSetColumn-Vorgang, der den Grenzwert überschritten hat, durch einen nachfolgenden Aufruf von JetSetColumnkompensiert werden kann.

Weitere Informationen finden Sie im Abschnitt "Hinweise" in JetUpdate.

Requirements (Anforderungen)

Anforderung Wert

Client

Erfordert Windows Vista.

Server

Erfordert Windows Server 2008 oder Windows Server 2003.

Header

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