AYUDA EN LÍNEA
 WINDEVWEBDEV Y WINDEV MOBILE

Ayuda / WLanguage / Administrar bases de datos / HFSQL / Funciones HFSQL
  • Bloqueo de registros
  • Casos de error
  • Manipular registros durante una transacción
  • Transacciones y contexto HFSQL independiente
  • OLE DB y Conectores Nativos
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaReportes y ConsultasCódigo de Usuario (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Código Navegador
WINDEV Mobile
AndroidWidget Android iPhone/iPadIOS WidgetApple WatchMac CatalystUniversal Windows 10 App
Otros
Procedimientos almacenados
Inicia una transacción en los archivos de datos (HFSQL o accedido a través de una Conector Nativo) y crea el archivo de transacción.
¿Cuál es la información que se guarda en el archivo de transacciones? Cuando una función WLanguage modifica un archivo de datos o de índices durante durante una transacción, los anteriores valores del registro y la operación realizada se almacenan en el archivo de transacciones.
HFSQL Client/Server Esta función propone dos modos de funcionamiento de las operaciones:
  • La transacción puede iniciarse en una conexión: En este caso, se inicia una transacción sólo para los archivos de datos associated a esta conexión. Este modo es necesario para gestionar el niveles de aislamiento de las transacciones.
  • La transacción puede iniciarse en todas las conexiones HFSQL (existentes o futuras).. En este caso, <Variable Connection>.Transaction inicia tanto una transacción HFSQL Classic (ISAM) como una transacción HFSQL Client/Server.
AndroidWidget Android iPhone/iPadIOS WidgetMac Catalyst La gestión de transacciones solo está disponible para bases de datos HFSQL Client/Server.
Observación: Esta función es equivalente a la función <variable Connection>.TransactionStart.
Ejemplo
MyConnection1 is Connection
 
// Start transaction on data files associated with MyConnection1
MyConnection1.Transaction()
Add_Order()
WHEN EXCEPTION IN
// Add the order
Order.Add()
// Validate the addition
MyConnection1.TransactionEnd()
DO
// Delete the order lines
MyConnection1.TransactionCancel()
END
Sintaxis

Iniciar una transacción Client/Server en una conexión específica Ocultar los detalles

<Result> = <Connection>.Transaction([<List of data files>])
<Result>: Booleano
  • True STRIMEULB si se ha iniciado la transacción,
  • False si se produce un problema. HErrorInfo devuelve más detalles sobre el error.
<Connection>: Variable de tipo Connection
Nombre de la variable de tipo Conexión que describe la conexión a utilizar.
<List of data files>: Cadena de caracteres opcional
Lista de los nombres lógicos de uno o varios ficheros de datos a tener en cuenta (o no) en la operación (en este caso, el nombre de el archivo de datos va precedido del signo "-").
Si no se especifica este parámetroTodos los archivos de datos utilizados durante la transacción serán tenidos en cuenta en la transacción.
Si todos los archivos de datos se prefijan con el signo "-"
Por ejemplo: "-Cliente, -Producto"
Todos los archivos de datos especificados en la lista y utilizados durante la transacción no serán tenidos en cuenta por la transacción.
Todos los archivos de datos no especificados en la lista serán tenidos en cuenta y utilizados durante la transacción.
<b>Si ningún archivo de datos de la lista lleva el prefijo "-"</b>
Por ejemplo: "Cliente, producto"
Todos los archivos de datos especificados en la lista y utilizados durante la transacción serán tenidos en cuenta en la transacción.
Todos los archivos de datos no especificados y manipulados durante la transacción serán ignorados en la misma.
Si algunos archivos de datos tienen el prefijo "-" y otros no son
Por ejemplo: "Cliente, Producto" (equivalente a "Producto")
Todos los archivos de datos de la lista con el prefijo "-" y utilizados durante la transacción serán ignorados en la transacción.
Todos los archivos de datos de la lista que no lleven el prefijo "-" y que se utilicen durante la transacción se tendrán en cuenta en la transacción.
Los archivos de datos no especificados en la lista serán excluidos de la transacción.

OLE DBConectores Nativos Este parámetro no se tiene en cuenta. Todos los archivos de datos de associated con la conexión están en transacción en el servidor nativo.

Iniciar una transacción Client/Server en una conexión específica Ocultar los detalles

<Result> = <Connection>.Transaction(<Transaction file> , <List of data files>)
<Result>: Booleano
  • True STRIMEULB si se ha iniciado la transacción,
  • False si se produce un problema. HErrorInfo devuelve más detalles sobre el error.
<Connection>: Variable de tipo Connection
Nombre de la variable de tipo Conexión que describe la conexión a utilizar.
<Transaction file>: Cadena de caracteres
HFSQL Classic Nombre completo del archivo de transacciones (utilizado para registrar las operaciones realizadas en la transacción). Este archivo se borrará automáticamente al utilizar <Variable Connection>.TransactionEnd o <Variable Connection>.TransactionCancel.
Si este nombre corresponde a una cadena vacía, el fichero de transacción se creará en el directorio de ficheros de aplicación y se denominará: <Nombre del proyecto>_$TRS_OPERATION.TRS.
HFSQL Client/ServerOLE DBConectores Nativos Este parámetro no se tiene en cuenta. Este parámetro se tiene en cuenta sólo para las transacciones de HFSQL Classic (transacciones ISAM).
<List of data files>: Cadena de caracteres
Lista de los nombres lógicos de uno o varios ficheros de datos a tener en cuenta (o no) en la operación (en este caso, el nombre de el archivo de datos va precedido del signo "-").
Si no se especifica este parámetroTodos los archivos de datos utilizados durante la transacción serán tenidos en cuenta en la transacción.
Si todos los archivos de datos se prefijan con el signo "-"
Por ejemplo: "-Cliente, -Producto"
Todos los archivos de datos especificados en la lista y utilizados durante la transacción no serán tenidos en cuenta por la transacción.
Todos los archivos de datos no especificados en la lista serán tenidos en cuenta y utilizados durante la transacción.
<b>Si ningún archivo de datos de la lista lleva el prefijo "-"</b>
Por ejemplo: "Cliente, producto"
Todos los archivos de datos especificados en la lista y utilizados durante la transacción serán tenidos en cuenta en la transacción.
Todos los archivos de datos no especificados y manipulados durante la transacción serán ignorados en la misma.
Si algunos archivos de datos tienen el prefijo "-" y otros no son
Por ejemplo: "Cliente, Producto" (equivalente a "Producto")
Todos los archivos de datos de la lista con el prefijo "-" y utilizados durante la transacción serán ignorados en la transacción.
Todos los archivos de datos de la lista que no lleven el prefijo "-" y que se utilicen durante la transacción se tendrán en cuenta en la transacción.
Los archivos de datos no especificados en la lista serán excluidos de la transacción.

OLE DBConectores Nativos Este parámetro no se tiene en cuenta. Todos los archivos de datos associated con la conexión están en transacción en el servidor nativo.
Observaciones

Bloqueo de registros

Los registros añadidos, modificados o eliminados en una transacción se bloquean en el modo de escritura.

Casos de error

  • Operaciones de anidamiento: Las transacciones no se pueden anidar (es decir, no se puede llamar a <Variable Connection>.Transaction en una transacción). En este caso, se produce el error 70031.
  • Se muestra un error fatal en los siguientes casos:
    • Se inicia una transacción en todas las conexiones mientras haya al menos una conexión en la transacción..
    • Se inicia una operación en una conexión mientras que ya se ha iniciado una operación en todas las conexiones..
    • Se inicia una transacción en todas las conexiones mientras haya al menos una conexión cuyo modo de aislamiento no sea "Read Uncommitted"..

Manipular registros durante una transacción

Durante una transacción, se deben cumplir algunas reglas al manipular registros. Para obtener más información, consulte Transacciones: Manipular registros durante una transacción.

Transacciones y contexto HFSQL independiente

Al copiar un contexto, si una transacción está en curso en el primer contexto, el nuevo contexto no está en la transacción.. Se debe llamar a la función <Variable Connection>.Transaction para iniciar una transacción en el nuevo contexto.
WINDEVWEBDEV - Código ServidorCódigo de Usuario (UMC)AjaxOLE DBConectores Nativos

OLE DB y Conectores Nativos

Sólo las sintaxis con conexión son tenidas en cuenta por la Conectores Nativos que soporta las transacciones. También se puede utilizar la función SQLTransaction.
Componente: wd290.dll
Versión mínima requerida
  • Versión 25
Esta página también está disponible para…
Comentarios
Haga clic en [Agregar] para publicar un comentario

Última modificación: 20/06/2023

Señalar un error o enviar una sugerencia | Ayuda local