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