Transacción: Cómo afectan las transacciones a las actualizaciones (ODBC)

Las actualizaciones al origen de datos se administran durante las transacciones mediante el uso de un búfer de edición (el mismo método usado fuera de las transacciones). Los miembros de datos de campo de un conjunto de registros actúan colectivamente como un búfer de edición que contiene el registro actual, del cual el conjunto de registros realiza una copia de seguridad temporalmente durante AddNew o Edit. Durante una operación Delete, no se realiza una copia de seguridad del registro actual dentro de una transacción. Para obtener más información sobre el búfer de edición y cómo las actualizaciones almacenan el registro actual, veaConjunto de registros: Actualizar los registros (ODBC).

Nota:

Si ha implementado la captura masiva de filas, no puede llamar a AddNew, Edit o Delete. En su lugar, debe escribir sus propias funciones para realizar actualizaciones en el origen de datos. Para más información sobre la obtención masiva de filas, vea Conjunto de registros: obtener registros de forma masiva (ODBC).

Durante las transacciones, las operaciones AddNew, Edit y Delete se pueden confirmar o revertir. Los efectos de CommitTrans y Rollback pueden hacer que el registro actual no se restaure en el búfer de edición. Para asegurarse de que el registro actual se retaura correctamente, es importante entender cómo las funciones miembro CommitTrans y Rollback de CDatabase trabajan con las funciones de actualización de CRecordset.

Cómo afecta CommitTrans a las actualizaciones

En la tabla siguiente se explican los efectos de CommitTrans en las transacciones.

Cómo afecta CommitTrans a las actualizaciones

Operación Estado del origen de datos
AddNew y Update, y luego CommitTrans Se agregan nuevos registros al origen de datos.
AddNew (sin Update), y luego CommitTrans Se pierde un nuevo registro. Registro no agregado al origen de datos.
Edit y Update, y luego CommitTrans Modificaciones confirmadas en el origen de datos.
Edit (sin Update), y luego CommitTrans Se pierden las modificaciones en el registro. El registro permanece sin cambios en el origen de datos.
Delete, y luego CommitTrans Registros eliminados del origen de datos.

Cómo afecta la reversión a las transacciones

En la tabla siguiente se explican los efectos de Rollback en las transacciones.

Cómo afecta la reversión a las transacciones

Operación Estado del registro actual También debe Estado del origen de datos
AddNew y Update, y luego Rollback El contenido del registro actual se almacena temporalmente para dejar espacio para un nuevo registro. Se introduce un nuevo registro en el búfer de edición. Después de llamar a Update, el registro actual se restaura en el búfer de edición. Se invierte la adición al origen de datos realizada por Update.
AddNew (sin Update), y luego Rollback El contenido del registro actual se almacena temporalmente para dejar espacio para un nuevo registro. El búfer de edición contiene un nuevo registro. Vuelva a llamar a AddNew para restaurar el búfer de edición en un registro vacío y nuevo. O llame a Move(0) para restaurar los valores antiguos en el búfer de edición. Dado que no se llamó a Update, no se realizaron cambios en el origen de datos.
Edit y Update, y luego Rollback Una versión sin editar del registro actual se almacena temporalmente. Las modificaciones se realizan en el contenido del búfer de edición. Después de llamar a Update, la versión sin editar del registro todavía se almacena temporalmente. Conjunto de registros dinámicos: desplácese fuera del registro actual y vuelva a restaurar la versión no editada del registro en el búfer de edición.

Instantánea: llame a Requery para actualizar el conjunto de registros desde el origen de datos.
Los cambios en el origen de datos realizados por Update se invierten.
Edit (sin Update), y luego Rollback Una versión sin editar del registro actual se almacena temporalmente. Las modificaciones se realizan en el contenido del búfer de edición. Vuelva a llamar a Edit para restaurar la versión sin editar del registro en el búfer de edición. Dado que no se llamó a Update, no se realizaron cambios en el origen de datos.
Delete, y luego Rollback Se elimina el contenido del registro actual. Llame a Requery para restaurar el contenido del registro actual desde el origen de datos. Se invierte la eliminación de datos del origen de datos.

Consulte también

Transacción (ODBC)
Transacción: Realizar una transacción en un conjunto de registros (ODBC)
CDatabase (clase)
CRecordset (clase)