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