JetUpdate-Funktion

Letzte Änderung: Freitag, 27. Februar 2015

Gilt für: Windows | Windows Server

JetUpdate-Funktion

Die JetUpdate -Funktion führt einen Aktualisierungsvorgang einschließlich Einfügen einer neuen Zeile in eine Tabelle oder eine vorhandene Zeile aktualisiert. Löschen einer Tabellenzeile erfolgt durch Aufrufen von JetDelete.

JetUpdate ist der letzte Schritt bei der Ausführung einer INSERT- oder Update. Das Update wird gestartet, indem Sie JetPrepareUpdate aufrufen und dann durch Aufrufen JetSetColumn oder JetSetColumns mindestens einmal zum Festlegen des Zustands der Datensatz. Schließlich wird JetUpdate aufgerufen, um den Aktualisierungsvorgang abzuschließen. Indizes werden nur von JetUpdate oder JetUpdate2und nicht während der JetSetColumn oder JetSetColumnsaktualisiert.

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 für diesen Aufruf verwenden.

Tabellen-ID

Der Cursor für diesen Aufruf verwenden.

pvBookmark

Zeiger auf einen zurückgegebenen Lesezeichen für eine eingefügte Zeile.

cbBookmark

Die Größe des Puffers, auf die PvBookmark.

pcbActual

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

Return Value

Diese Funktion gibt den Datentyp der JET_ERR mit einem der folgenden Rückgabecodes. Weitere Informationen zu den möglichen ESE-Fehlern finden Sie unter Extensible Storage Engine-Fehler und Fehler behandeln Parameter.

Rückgabecode

Beschreibung

JET_errSuccess

Der Vorgang wurde erfolgreich abgeschlossen.

JET_errBufferTooSmall

Der angegebene Puffer für die Textmarke ein Datensatz ist nicht ausreichend groß genug ist, um das Lesezeichen des Datensatzes zu speichern.

JET_errClientRequestToStopJetService

Es ist nicht möglich, um den Vorgang abzuschließen, da alle Aktivitäten in der Instanz dieser Sitzung aufgrund eines Aufrufs von JetStopServiceeingestellt hat.

JET_errColumnIllegalNull

Identisch mit JET_errNullInvalid.

JET_errDiskFull

Der Aktualisierungsvorgang erfordert, Datenbank-Datei Wachstum oder Log File Allocation, aber das Laufwerk, in dem die Serie Datenbank, Datei oder Protokolldatei befindet, ist voll. Auch die Datenbankdatei auf einem Volume FAT32 formatiert ist und die Datenbankdatei ist bereits 4GBytes, die für FAT32 pro Datei.

JET_errInstanceUnavailable

Es ist nicht möglich, um den Vorgang abzuschließen, da die Sitzung zugeordnete Instanz ein schwerwiegender Fehler, der erfordert aufgetreten ist, dass der Zugriff auf alle Daten gesperrt werden, um die Integrität der Daten zu schützen.

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

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 Index-Schlüssels für einen anderen Datensatz bereits in der Tabelle und der Index lässt keine Duplikate zu.

JET_errKeyTruncated

Der eingefügte oder aktualisierte Datensatz verfügt über ein oder mehrere Indizes für die generierte Schlüssel die maximale zulässige Größe überschritten haben würde. Der Vorgang konnte daher wichtige Abschneiden zu verhindern.

JET_errMultiValuedIndexViolation

Der eingefügte oder aktualisierte Datensatz hat eine indizierte Spalte mit mehreren Werte mit zwei oder mehr Werte, die innerhalb der maximalen Länge Schlüsselgröße für den Index festlegen identisch sind. Daher ist der Datensatz zwei identische Einträge in den Index, der ungültig ist.

JET_errNotInitialized

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

JET_errNullInvalid

Eine oder mehrere Spalten der Datensatz eingefügt werden oder in den aktualisierten Zustand eines Datensatzes wird ersetzen ist NULL , der die definierte Einschränkung für diese Spalten.

JET_errNullKeyDisallowed

Einen oder mehrere Indizes sind definiert, nicht um einen NULL -Schlüssel und der eingefügte oder aktualisierte Zustand eines Datensatzes ersetzt diese definierten Einschränkung verletzt.

JET_errRecordPrimaryChanged

Ein Datensatz Ersetzungsvorgang hat der Primärschlüssel aktualisiert. Aktualisierungen an Primärschlüsselspalten müssen den vorhandenen Datensatz löschen und Einfügen eines neuen Datensatzes mit den gewünschten Daten erfolgen.

JET_errRestoreInProgress

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

JET_errSessionSharingViolation

Die gleiche Sitzung kann für mehrere Threads gleichzeitig verwendet werden.

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

JET_errTermInProgress

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

JET_errTransReadOnly

Es ist unzulässig, wenn innerhalb des Bereichs der Transaktion read nur eine Aktualisierung versuchen. Eine Lese nur Transaktion ist eine Transaktion, die mit einem Aufruf von JetBeginTransaction2 mit JET_bitTransactionReadOnly gestartet wurde.

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

JET_errUpdateNotPrepared

JetPrepareUpdate wurde mit JET_prepCancel aufgerufen, aber der Cursor wurde nicht in den Status ' vorbereitet '.

JET_errVersionStoreOutOfMemory

Der Vorgang ist fehlgeschlagen, da nicht genügend Arbeitsspeicher ist, um transaktionale Informationen beibehalten.

JET_errWriteConflict

Eine andere Sitzung hat den Datensatz für das Update bereits gesperrt. Das Update von der Sitzung versucht, schlägt fehl.

Bei Erfolg wird der open Update-Operation für den Cursor abgeschlossen. Wenn eine AUTOINCREMENT-Spalte für die Tabelle definiert ist, wird dieser Wert für die eingefügten Datensätze festgelegt. Wenn eine Spalte Version für die Tabelle definiert ist, ist der Wert initialisiert für neu eingefügte Datensätze oder erhöht, jedes Mal, wenn ein Datensatz ersetzt wird. Alle Indizes, einschließlich gruppierte und nicht gruppierte Indizes werden aktualisiert.

Bei einem Fehler werden keine Änderungen jeglicher Art an der Datenbank vorgenommen. Vor dem Einfügen und dem Ersetzen Rückruffunktionen möglicherweise aufgerufen wurde, aber nach Einfügen und ersetzen Rückrufe werden nicht haben aufgerufen, da diese eine Aktualisierung fehlschlagen verursachen können. Der Kopierpuffer Cursor bleibt im Zustand bereit, damit die Möglichkeit, die inkrementell behandeln Sie die Probleme, die Fehler verursacht haben, und wiederholen Sie den Update-Vorgang vorhanden ist.

Anmerkungen

Callback-Funktionen können registriert werden, um vor oder nach dem Einfügen, und vor oder nach dem Update aufgerufen werden.

Größenbeschränkungen für Datensatz werden durch JetUpdatevon JetSetColumnund im Allgemeinen nicht erzwungen.

Es ist wichtig zu verstehen, die Auswirkungen auf eine große Anzahl von Update-Vorgänge innerhalb einer einzelnen Transaktion ausführen. Jede Aktualisierung in der Datenbank muss vom Datenbankmodul im Versionsspeicher nachverfolgt werden. Der Versionsspeicher enthält eine live Aufzeichnung über die verschiedenen Versionen der einzelnen Datensatz oder Index-Einträge in der Datenbank, die alle aktiven Transaktionen sichtbar sind. Diese Versionen werden zur Unterstützung der Multi-versionierte Parallelitätssteuerung verwendet vom Datenbankmodul zum Unterstützen von Transaktionen mit Snapshot-Isolation verwendet. Sobald das Datenbankmodul zum Speichern dieser Versionen verwendeten Ressourcen erschöpft hat dann akzeptieren es nicht mehr weiter Änderungen bis einige Transaktionen geschlossen haben, damit diese Ressourcen freigegeben werden können. Wenn das Modul in diesem Zustand ist, schlägt mit JET_errVersionStoreOutOfMemory alle Updates fehl. Die verfügbaren Ressourcen für das Datenbankmodul zum Speichern dieser Versionen können JetSetSystemParameter mit JET_paramMaxVerPages und JET_paramGlobalMinVerPagesgesteuert werden.

Voraussetzungen

-Client,

Erfordert Windows Vista, Windows XP oder Windows 2000 Professional.

Server

Erfordert WindowsServer 2008, WindowsServer 2003 oder Windows 2000 Server.

Kopfzeile

In Esent.h deklariert.

Library

Verwenden Sie ESENT.lib.

DLL

"ESENT.dll" erfordert.

Siehe auch

JET_ERR
JET_SESID
JET_TABLEID
JetDelete
JetPrepareUpdate
JetRegisterCallback
JetRetrieveColumn
JetRetrieveColumns
JetSetColumn
JetSetColumns
JetSetSystemParameter
Systemparameter