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