JetUpdate-Funktion

Gilt für: Windows | Windows Server

JetUpdate-Funktion

Die JetUpdate-Funktion führt einen Aktualisierungsvorgang aus, einschließlich einfügen 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 eines Einfüge- oder Aktualisierungsschritts. Das Update wird gestartet, indem JetPrepareUpdate und dann JetSetColumn oder JetSetColumns einmal oder mehrmals zum Festlegen des Datensatzstatus aufruft. Schließlich wird JetUpdate aufgerufen, um den Updatevorgang abschließen zu können. Indizes werden nur von JetUpdate oder JetUpdate2und nicht während JetSetColumn 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 zeigt.

–actual

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 JET_ERR datentyp mit einem der folgenden Rückgabecodes zurück. Weitere Informationen zu 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 puffer für das Datensatz-Lesezeichen ist nicht groß genug, um das Datensatz-Lesezeichen zu speichern.

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_errColumnIllegalNull

Identisch mit JET_errNullInvalid.

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 beträgt bereits 4 GB, das Limit pro Datei für FAT32.

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.

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

JET_errInvalidParameter

Der angegebenen 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 vorhanden 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 Mehrwertspalte mit zwei oder mehr Werten, die innerhalb der für den Index festgelegten Schlüsselgröße mit maximaler Länge identisch sind. Daher verfügt der Datensatz über zwei identische Einträge im Index, die ungültig sind.

JET_errNotInitialized

Der Vorgang kann nicht abgeschlossen werden, da die der Sitzung zugeordnete Instanz noch nicht initialisiert wurde.

JET_errNullInvalid

Mindestens eine Spalte im Datensatz, der eingefügt werden soll, 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 Index ist so definiert, dass kein NULL-Schlüssel zulässig ist, und der eingefügte oder aktualisierte Zustand eines Datensatzes, der ersetzt wird, verstößt gegen diese definierte Einschränkung.

JET_errRecordPrimaryChanged

Bei einem 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

Der Vorgang kann nicht abgeschlossen werden, da ein Wiederherstellungsvorgang für die -Instanz durchgeführt wird, die der Sitzung zugeordnet ist.

JET_errSessionSharingViolation

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

Windows XP: 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

Es ist unzulässig, ein Update innerhalb des Bereichs einer schreibgeschützten Transaktion zu versuchen. Eine schreibgeschützte Transaktion ist eine Transaktion, die mit einem Aufruf von JetBeginTransaction2 mit JET_bitTransactionReadOnly.

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

JET_errUpdateNotPrepared

JetPrepareUpdate wurde mit JET_prepCancel, aber der Cursor war nicht im vorbereiteten Zustand.

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 wird der geöffnete Aktualisierungsvorgang für den Cursor abgeschlossen. Wenn für die Tabelle eine Spalte mit automatischer Inkrementerhöhung 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 keine Änderungen an der Datenbank vorgenommen. Vor dem Einfügen und vor dem Ersetzen wurden rückruffunktionen möglicherweise aufgerufen, aber nach dem Einfügen und nach dem Ersetzen wurden keine Rückrufe aufgerufen, da letzteres nicht dazu führen kann, dass ein Update fehlschlägt. Der Cursorkopierpuffer bleibt im vorbereiteten Zustand, sodass die Möglichkeit besteht, die Fehler inkrementell zu beheben und den Aktualisierungsvorgang zu wiederholen.

Bemerkungen

Rückruffunktionen können so registriert werden, dass sie vor oder nach dem Einfügen und vor oder nach dem Update aufgerufen werden.

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

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, führen alle Updates zu einem Fehler 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.

Requirements (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.

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
JetSetSystemParameter
Systemparameter