JetUpdate2-Funktion

Gilt für: Windows | Windows Server

JetUpdate2-Funktion

Die JetUpdate2-Funktion führt einen Aktualisierungsvorgang aus, einschließlich des Einfügens einer neuen Zeile in eine Tabelle oder aktualisieren einer vorhandenen Zeile. Diese Funktion enthält eine Liste der Grbit-Optionen , die während der Durchführung 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 wird und dann jetSetColumn oder JetSetColumns mehrmals aufgerufen wird, um den Datensatzstatus festzulegen. Schließlich wird JetUpdate2 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 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 pvBookmark verweist.

pcbActual

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 Optionen enthalten, die für diesen Aufruf verwendet werden sollen, einschließlich 0 oder mehr der folgenden Optionen.

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, wodurch eine geringere maximale Anzahl von mehrwertigen Spalteninstanzen in jedem Datensatz erzwungen wurde als spätere Versionen von ESE. Dies ist nur für Anwendungen wichtig, die Daten zwischen Unter Windows 2000 gehosteten Anwendungen und Anwendungen replizieren möchten, die unter Windows Server 2003 oder höheren Versionen von ESE gehostet werden. Dies sollte für die meisten Anwendungen nicht erforderlich sein.

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_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_errUpdateNotPrepared

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

JET_errWriteConflict

Bei einem Datensatzersetzungsvorgang, für den noch keine Schreibsperre zugewiesen wurde, kann zum Zeitpunkt der Aktualisierung ein Schreibkonflikt auftreten.

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

Einschränkungen der Datensatzgröße werden von JetSetColumn und nicht im Allgemeinen von JetUpdate erzwungen. 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 JetSetColumn kompensiert werden kann.

Weitere Informationen finden Sie im Abschnitt Hinweise in JetUpdate .

Anforderungen

Anforderung Wert

Client

Erfordert Windows Vista.

Server

Erfordert Windows Server 2008 oder Windows Server 2003.

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