AYUDA EN LÍNEA
 WINDEVWEBDEV Y WINDEV MOBILE

Este contenido se ha traducido automáticamente.  Haga clic aquí  para ver la versión en inglés.
Ayuda / WLanguage / Administrar bases de datos / HFSQL / Gestión de transacciones / Funciones WLanguage
  • Aplicación de red (base de datos ISAM)
  • Bloqueo de registros
  • Casos de error
  • Archivos temporales creados durante la transacción (base de datos ISAM)
  • 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 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, HTransactionStart 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 HTransaction.
Ejemplo
MyConnection1 is Connection
 
// Start transaction on data files associated with MyConnection1
HTransactionStart(MyConnection1)
 
// Code used to prepare the order to added
// ...
 
WHEN EXCEPTION IN
// Add the order
HAdd(Orders)
// Validate the addition
HTransactionEnd(MyConnection1)
DO
// Delete the order lines
HTransactionCancel(MyConnection1)
END
// Start transaction on the Orders and OrdLine data files
HTransactionStart("C:\Temp\Transaction.trs", "Orders,OrdLine,-Customer")
 
// Code used to prepare the order to added
// ...
 
WHEN EXCEPTION IN
// Add the order
HAdd(Orders)
// Validate the addition
HTransactionEnd()
DO
// Delete the order lines
HTransactionCancel()
END
Sintaxis

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

<Result> = HTransactionStart(<Connection> [, <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>: Cadena de caracteres o variable de tipo Connection
Nombre de la conexión a utilizar. Esta conexión corresponde a: Si este parámetro corresponde a la constante hAccessHF7, la transacción se realizará en archivos HFSQL ISAM.
<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 no especificados en la lista serán excluidos de la transacción.
Conectores 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 Cliente/Servidor en una conexión específica o una transacción ISAM Ocultar los detalles

<Result> = HTransactionStart(<Connection> , <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>: Cadena de caracteres o variable de tipo Connection
Conexión a utilizar. Esta conexión corresponde a:Si este parámetro corresponde a una cadena vacía ("") o a la constante hAccessHF7, la transacción se realiza en los archivos de datos HFSQL ISAM.
<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 HTransactionEnd o HTransactionCancel.
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/ServerConectores 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.
Conectores 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 ISAM y/o Cliente/Servidor en todas las conexiones HFSQL Client/Server (existentes o futuras) Ocultar los detalles

<Result> = HTransactionStart([<Transaction file> [, <List of 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.
<Transaction file>: Cadena de caracteres opcional
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 HTransactionEnd o HTransactionCancel.
Si no se especifica este nombre o si corresponde a una cadena vacía, el fichero de transacción se creará en el directorio de los ficheros de datos de la aplicación y se denominará: <Nombre del proyecto>_$TRS_OPERATION.TRS.
HFSQL Client/ServerConectores 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 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.
Observaciones
HFSQL Classic

Aplicación de red (base de datos ISAM)

En la red, el archivo de transacción se puede crear en un disco local o en una unidad de red.
  • Si el archivo de transacción está instalado en un ordenador localeste archivo contendrá información sobre las transacciones realizadas por el ordenador actual. En este caso, el fichero de transacción se borra cuando finaliza la transacción.
  • Si el archivo de transacción está instalado en una unidad de red (recomendado), este archivo contendrá información sobre las transacciones realizadas por varios ordenadores. Cada ordenador está identificado por un número único. En este caso, el fichero de transacción se borra cuando finaliza la última transacción.

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 HTransactionStart 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"..
HFSQL Classic

Archivos temporales creados durante la transacción (base de datos ISAM)

Durante la transacción, se crean ficheros temporales (extensión".TRX") en el directorio que contiene los ficheros de datos (ficheros".FIC").. Estos archivos temporales no deben ser borrados. De lo contrario, los datos tratados por la transacción podrían resultar dañados.
Observación: Estos archivos temporales se eliminan automáticamente al final de la transacción.

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 HTransactionStart para iniciar una transacción en el nuevo contexto.
Conectores Nativos

OLE DB y Conectores Nativos

Sólo las sintaxis con conexión son tenidas en cuenta por los Accesos Nativos que soportan las transacciones.. También se puede utilizar la función SQLTransaction.
Componente: wd290hf.dll
Versión mínima requerida
  • Versión 9
Esta página también está disponible para…
Comentarios
Example 01
MyConnection1 is Connection

myErrors is int = 0

// Start transaction on data files associated with MyConnection1

HTransactionStart(MyConnection1)

WHEN EXCEPTION IN


if HAdd(tabelaEstoque) = false
myErrors += 1
end

if HAdd(TabelaFinanceiro)=false
myErrors += 1
end

if HAdd(TabelaContabil)=false
myErrors += 1
end

// Validate the addition

if myErrors = 0
HTransactionEnd(MyConnection1)
else
HTransactionCancel(MyConnection1)
end

DO

// Delete the order lines
HTransactionCancel(MyConnection1)

END
Boller
09 08 2022

Última modificación: 27/05/2022

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