Función JetUpdate2

Se aplica a: Windows | Windows Server

Función JetUpdate2

La función JetUpdate2 realiza una operación de actualización, incluida la inserción de una nueva fila en una tabla o la actualización de una fila existente. Esta función contiene una lista de opciones de grbit que se pueden establecer al realizar una actualización. La eliminación de una fila de tabla se realiza mediante una llamada a JetDelete.

Windows Server 2003: JetUpdate2 se presenta en Windows Server 2003.

JetUpdate2 es el último paso para realizar una inserción o una actualización. La actualización se inicia llamando a JetPrepareUpdate y, a continuación, llamando a JetSetColumn o JetSetColumns una o varias veces para establecer el estado del registro. Por último, se llama a JetUpdate2 para completar la operación de actualización. Los índices solo se actualizan mediante JetUpdate o JetUpdate2, y no durante JetSetColumn o JetSetColumns.

    JET_ERR JET_API JetUpdate2(
      __in          JET_SESID sesid,
      __in          JET_TABLEID tableid,
      __out_opt     void* pvBookmark,
      __in          unsigned long cbBookmark,
      __out_opt     unsigned long* pcbActual,
      __in            const JET_GRBIT grbit
    );

Parámetros

sesid

La sesión que se va a usar para esta llamada.

tableid

Cursor que se va a usar para esta llamada.

pvBookmark

Puntero a un marcador devuelto para una fila insertada.

cbBookmark

Tamaño del búfer al que apunta pvBookmark.

pcbActual

Tamaño devuelto del marcador para la fila insertada devuelta en pvBookmark.

grbit

Un grupo de bits que contienen las opciones que se usarán para esta llamada, que incluyen cero o más de lo siguiente.

Value

Significado

JET_bitUpdateCheckESE97Compatibility

Esta marca hace que la actualización devuelva un error si la actualización no hubiera sido posible en la versión de Windows 2000 de ESE, que aplicaba un número máximo menor de instancias de columna multivalor en cada registro que versiones posteriores de ESE. Esto solo es importante para las aplicaciones que quieran replicar datos entre aplicaciones hospedadas en Windows 2000 y aplicaciones hospedadas en Windows Server 2003 o versiones posteriores de ESE. No debe ser necesario para la mayoría de las aplicaciones.

Valor devuelto

Esta función devuelve el JET_ERR tipo de datos con uno de los siguientes códigos de retorno. Para obtener más información sobre los posibles errores de ESE, vea Extensible Storage Engine Errors and Error Handling Parameters.

Código devuelto

Descripción

JET_errSuccess

La operación se ha completado correctamente.

JET_errBufferTooSmall

El búfer especificado para el marcador de registro no es lo suficientemente grande como para almacenar el marcador de registro.

JET_errClientRequestToStopJetService

No es posible completar la operación porque toda la actividad de la instancia asociada a la sesión ha dejado de funcionar como resultado de una llamada a JetStopService.

JET_errDiskFull

La operación de actualización requiere crecimiento de archivos de base de datos o asignación de archivos de registro, pero la unidad de disco donde reside el archivo de base de datos o la serie de registros está llena. Como alternativa, el archivo de base de datos está en un volumen con formato FAT32 y el archivo de base de datos ya es 4GBytes, el límite por archivo para FAT32.

JET_errInstanceUnavailable

No es posible completar la operación porque la instancia asociada a la sesión ha encontrado un error irrecuperable que requiere que se revoque el acceso a todos los datos para proteger la integridad de esos datos.

Windows XP: Este error solo lo devolverá Windows XP y versiones posteriores.

JET_errInvalidParameter

El parámetro de preparación especificado en la función JetPrepareUpdate no es una marca válida.

JET_errKeyDuplicate

Una clave de índice para este registro es un duplicado de otra clave de índice para otro registro ya en la tabla y el índice no permite duplicados.

JET_errKeyTruncated

El registro insertado o actualizado tiene uno o varios índices para los que la clave generada habría superado el tamaño máximo permitido. Como resultado, la operación no ha podido evitar el truncamiento de claves.

JET_errMultiValuedIndexViolation

El registro insertado o actualizado tiene una columna de varios valores indizado con dos o más valores idénticos dentro del tamaño máximo de clave de longitud establecido para el índice. Como resultado, el registro tiene dos entradas idénticas en el índice que no son válidas.

JET_errNotInitialized

No es posible completar la operación porque la instancia asociada a la sesión aún no se ha inicializado.

JET_errNullInvalid

Una o varias columnas del registro que se van a insertar o en el estado actualizado de un registro que se va a reemplazar es NULL , lo que infringe la restricción definida para esas columnas.

JET_errNullKeyDisallowed

Se definen uno o varios índices para no permitir una clave NULL y el estado insertado o actualizado de un registro que se va a reemplazar infringe esta restricción definida.

JET_errRecordPrimaryChanged

Una operación de reemplazo de registros ha actualizado la clave principal. Novedades a las columnas de clave principal se deben realizar mediante la eliminación del registro existente e insertar un nuevo registro con los datos deseados.

JET_errRestoreInProgress

No es posible completar la operación porque una operación de restauración está en curso en la instancia asociada a la sesión.

JET_errSessionSharingViolation

No se puede usar la misma sesión para más de un subproceso al mismo tiempo.

Windows XP: Este error solo lo devolverá Windows XP y versiones posteriores.

JET_errTermInProgress

No es posible completar la operación porque la instancia asociada a la sesión se está cerrando.

JET_errUpdateNotPrepared

Se llamó a JetPrepareUpdate con JET_prepCancel, pero el cursor no estaba en estado preparado.

JET_errWriteConflict

Una operación de reemplazo de registros para la que aún no se asignó un bloqueo de escritura puede encontrar un conflicto de escritura en el momento de la actualización.

Si se ejecuta correctamente, se completa la operación de actualización abierta en el cursor. Si se define una columna de incremento automático para la tabla, este valor se establece para los registros insertados. Si se define una columna de versión para la tabla, su valor se inicializa para los registros recién insertados o se incrementa cada vez que se reemplaza un registro. Todos los índices, incluidos los índices agrupados y no agrupados, se actualizan.

Si se produce un error, no se realizan cambios de ningún tipo en la base de datos. Antes de llamar a las funciones de devolución de llamada insert y before replace, pero después de insertar y después de reemplazar las devoluciones de llamada no se habrán llamado, ya que este último no puede provocar un error en una actualización. El búfer de copia del cursor se deja en su estado preparado, por lo que existe la oportunidad de corregir incrementalmente los problemas que provocaron errores y reintentar la operación de actualización.

Comentarios

JetSetColumn aplica limitaciones de tamaño de registro y no en general por JetUpdate. La única excepción es cuando se usa la marca de compatibilidad JET_bitUpdateCheckESE97Compatibility. En este caso, se comprueba todo el registro, ya que una operación JetSetColumn individual que superó el límite puede ser compensada por una llamada posterior a JetSetColumn.

Consulte la sección Comentarios de JetUpdate para obtener más información.

Requisitos

Requisito Value

Cliente

Requiere Windows Vista.

Servidor

Requiere Windows Server 2008 o Windows Server 2003.

Encabezado

Declarado en Esent.h.

Library

Use ESENT.lib.

Archivo DLL

Requiere ESENT.dll.

Consulte también

JET_ERR
JET_SESID
JET_TABLEID
JetDelete
JetPrepareUpdate
JetRegisterCallback
JetRetrieveColumn
JetRetrieveColumns
JetSetColumn
JetSetColumns