JetPrepareUpdate-Funktion
Gilt für: Windows | Windows Server
JetPrepareUpdate-Funktion
Die JetPrepareUpdate-Funktion ist der erste Vorgang beim Ausführen einer Aktualisierung, um einen neuen Datensatz einzufügen oder einen vorhandenen Datensatz durch neue Werte zu ersetzen. Updates erfolgen, indem Sie JetPrepareUpdate aufrufen, dann JetSetColumn oder JetSetColumns 0 oder mehr Mal aufrufen und schließlich JetUpdate aufrufen, um den Vorgang abzuschließen. JetPrepareUpdate und JetUpdate legen die Grenzen für einen Aktualisierungsvorgang fest und sind wichtig, wenn nur der endgültige Aktualisierungsstatus eines Datensatzes in Indizes eingegeben wird. Dies ist effizienter, aber auch in Fällen erforderlich, in denen Die Daten mit einem gültigen Zustand übereinstimmen müssen, indem mehr als ein festgelegter Spaltenvorgang ausgeführt wird.
Es gibt einige verschiedene Optionen zum Einfügen oder Ersetzen von Datensätzen, die im Folgenden ausführlicher beschrieben werden.
JET_ERR JET_API JetPrepareUpdate(
__in JET_SESID sesid,
__in JET_TABLEID tableid,
__in unsigned long prep
);
Parameter
sesid
Die Sitzung, die für diesen Aufruf verwendet werden soll.
tableid
Der Cursor, der für diesen Aufruf verwendet werden soll.
Prep
Die Optionen, die zur Vorbereitung auf ein Update verwendet werden können, einschließlich der folgenden Optionen.
Wert |
Bedeutung |
---|---|
JET_prepCancel |
Dieses Flag bewirkt , dass JetPrepareUpdate das Update für diesen Cursor abbricht. |
JET_prepInsert |
Dieses Flag bewirkt, dass sich der Cursor auf das Einfügen eines neuen Datensatzes vorbereitet. Alle Daten werden mit dem Standardzustand für den Datensatz initialisiert. Wenn die Tabelle über eine Spalte für automatisches Inkrement verfügt, wird diesem Datensatz ein neuer Wert zugewiesen, unabhängig davon, ob das Update letztendlich erfolgreich ist, fehlschlägt oder abgebrochen wird. |
JET_prepInsertCopy |
Dieses Flag bewirkt, dass der Cursor das Einfügen einer Kopie des vorhandenen Datensatzes vorbereitet. Wenn diese Option verwendet wird, muss ein aktueller Datensatz vorhanden sein. Der Anfangszustand des neuen Datensatzes wird aus dem aktuellen Datensatz kopiert. Lange Werte, die off-record gespeichert werden, werden virtuell kopiert. |
JET_prepInsertCopyDeleteOriginal |
Dieses Flag bewirkt, dass sich der Cursor auf ein Einfügen desselben Datensatzes und einen Löschvorgang oder den ursprünglichen Datensatz vorbereitet. Es wird in Fällen verwendet, in denen sich der Primärschlüssel geändert hat. |
JET_prepReplace |
Dieses Flag bewirkt, dass sich der Cursor auf eine Ersetzung des aktuellen Datensatzes vorbereitet. Wenn die Tabelle über eine Versionsspalte verfügt, wird die Versionsspalte auf den nächsten Wert in ihrer Sequenz festgelegt. Wenn dieses Update nicht abgeschlossen ist, ist der Versionswert im Datensatz nicht betroffen. Für den Datensatz wird eine Updatesperre ausgeführt, um zu verhindern, dass andere Sitzungen diesen Datensatz aktualisieren, bevor diese Sitzung abgeschlossen ist. |
JET_prepReplaceNoLock |
Dieses Flag ähnelt JET_prepReplace, aber es wird keine Sperre ergriffen, um zu verhindern, dass andere Sitzungen diesen Datensatz aktualisieren. Stattdessen erhält diese Sitzung möglicherweise JET_errWriteConflict, wenn JetUpdate aufgerufen wird, um das Update abzuschließen. |
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 Erweiterbare Speichermodulfehler und Fehlerbehandlungsparameter.
Rückgabecode |
Beschreibung |
---|---|
JET_errSuccess |
Der Vorgang wurde erfolgreich abgeschlossen. |
JET_errAlreadyPrepared |
JetPrepareUpdate wurde mit einem gültigen Flag für die Vorbereitung aufgerufen, aber nicht JET_prepCancel, und der Cursor befand sich bereits im vorbereiteten Zustand. |
JET_errClientRequestToStopJetService |
Es ist nicht möglich, den Vorgang abzuschließen, da alle Aktivitäten auf dem instance, die der Sitzung zugeordnet sind, aufgrund eines Aufrufs von JetStopService beendet wurden. |
JET_errInstanceUnavailable |
Es ist nicht möglich, den Vorgang abzuschließen, da beim instance, der 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. Dieser Fehler wird nur von Windows XP und höheren Versionen zurückgegeben. |
JET_errInvalidParameter |
Das angegebene Präpflag ist kein gültiges Flag. |
JET_errNotInitialized |
Es ist nicht möglich, den Vorgang abzuschließen, da die der Sitzung zugeordnete instance noch nicht initialisiert wurde. |
JET_errNotInTransaction |
JetPrepareUpdate wurde aufgerufen, um einen Datensatz mit SLV-Spalten zu ersetzen. SLV-Spalten. Beachten Sie, dass SLV-Spalten ein Feature sind, das nicht für die allgemeine Verwendung vorgesehen ist. Dieses Feature wird zur Unterstützung der Microsoft Exchange-Infrastruktur verwendet und ist nicht für die Verwendung in Ihrer Anwendung vorgesehen. |
JET_errRestoreInProgress |
Es ist nicht möglich, den Vorgang abzuschließen, da auf dem der Sitzung zugeordneten instance ein Wiederherstellungsvorgang ausgeführt wird. |
JET_errRollbackError |
JetPrepareUpdate wurde mit JET_prepCancel aufgerufen, konnte aber nicht alle Änderungen an Spalten vom Typ JET_coltypLongText und/oder Spalten vom Typ JET_coltypLongBinary zurücksetzen. |
JET_errSessionSharingViolation |
Dieses Flag kann nicht mit derselben Sitzung aus mehr als einem Thread gleichzeitig verwendet werden. Dieser Fehler wird nur von Windows XP und höheren Versionen zurückgegeben. |
JET_errTermInProgress |
Es ist nicht möglich, den Vorgang abzuschließen, da die der Sitzung zugeordnete instance heruntergefahren wird. |
JET_errUpdateNotPrepared |
JetPrepareUpdate wurde mit JET_prepCancel aufgerufen, aber der Cursor befand sich nicht im vorbereiteten Zustand. |
Bei Erfolg wird der Cursor zum Zweck der gewünschten Aktualisierung in den vorbereiteten Zustand geändert, oder im Fall von JET_prepCancel wird der Cursor in den nicht vorbereiteten Zustand zurückgesetzt, und alle Änderungen werden verworfen.
Bei einem Fehler bleibt der Cursorzustand unverändert. Wenn der Fehler JET_errRollbackError wurde, wird der Cursorzustand in den nicht vorbereiteten Zustand geändert, aber nicht alle Änderungen wurden rückgängig gemacht.
Bemerkungen
Das Einfügen einer Kopie eines Datensatzes ist eine wichtige Optimierung, wenn Datensätze Daten vom Typ JET_coltypLongText und/oder JET_coltypLongBinary freigeben. Diese Daten werden off-record gespeichert, wenn sie groß sind, und es ist möglich, dass mehrere Datensätze dieselbe physische Darstellung der Daten verwenden. In diesem Fall können die Daten aus beiden Datensätzen aktualisiert werden, aber dadurch werden die Daten so geplatzt, dass jeder Datensatz über eine eigene Kopie verfügt. Es ist nicht möglich, Daten in einem Datensatz durch eine Änderung aus einem anderen Datensatz zu ändern. Außerdem ist es nicht möglich, eine Aktualisierung eines Datensatzes durch ein Update eines anderen Datensatzes zu blockieren. Dies ist ein zentrales Feature für ESE und wird als Record Level Locking bezeichnet.
JetUpdate-Vorgänge , bei denen ein Fehler auftritt, lassen den Cursor im updatebereiten Zustand zurück. Dies ermöglicht die Korrektur einiger Fehler, z. B. eines falschen Spaltenwerts, ohne dass der Aktualisierungszustand neu erstellt werden muss. Dies bedeutet, dass in allen Fällen, in denen ein Cursor ein Update beendet, JetPrepareUpdate explizit mit JET_prepCancel aufrufen muss.
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. |
Kopfzeile |
Deklariert in Esent.h. |
Bibliothek |
Verwenden Sie ESENT.lib. |
DLL |
Erfordert ESENT.dll. |
Weitere Informationen
JET_ERR
JET_SESID
JET_TABLEID
JetRetrieveColumn
JetSetColumn
JetUpdate