AYUDA EN LÍNEA
 WINDEVWEBDEV Y WINDEV MOBILE

Ayuda / WLanguage / Administrar bases de datos / HFSQL / Funciones HFSQL
  • Ubicación y acceso a los archivos de datos
  • Detección de un error
  • Consejo: Restaurar la consistencia de la base de datos
  • Casos de error
  • 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
Si una transacción está en cursocancela todas las operaciones realizadas en los ficheros de datos de la operación desde el inicio de la operación.. En este caso, la transacción se cancela sin interrumpir la ejecución del programa.
Si no hay ninguna transacción en cursorestablece la consistencia de la base de datos y cancela la transacción fallida (por ejemplo, un fallo de alimentación)..
Observación: Una transacción que ha fallado puede ser cancelada por cualquier programa.
El fichero de transacción se destruye automáticamente si no se comparte.. Se desbloquean los registros bloqueados por las operaciones de escritura realizadas durante la transacción.
AndroidWidget Android iPhone/iPadIOS WidgetMac Catalyst La gestión de transacciones solo está disponible para bases de datos HFSQL Client/Server.
Ejemplo
MyConnection is Connection
 
// Start transaction on data files associated with MyConnection
MyConnection.TransactionStart()
Add_Order()
WHEN EXCEPTION IN
// Add the order
Order.Add()
// Validate the addition
MyConnection.TransactionEnd()
DO
// Delete the order lines
MyConnection.TransactionCancel()
END
Sintaxis

Cancelar una transacción en curso o una transacción interrumpida en una conexión Client/Server Ocultar los detalles

<Result> = <Connection>.TransactionCancel()
<Result>: Booleano
  • True STRIMEULB si la transacción fue cancelada,
  • False si se produce un problema. HErrorInfo devuelve más detalles sobre el error.
Atención:
  • Si una transacción está en curso en la conexión, se cancela.
  • Si no hay ninguna transacción en curso, las transacciones interrumpidas se cancelan para la conexión especificada..
<Connection>: Variable de tipo Connection
Nombre de la variable de tipo Conexión que describe la conexión a utilizar.

Cancelar una transacción interrumpida en una base de datos Client/Server (se debe utilizar si no hay ninguna transacción en curso) Ocultar los detalles

<Result> = <Connection>.TransactionCancel(<Database>)
<Result>: Booleano
  • True STRIMEULB si la transacción fue cancelada,
  • False si se produce un problema. HErrorInfo devuelve más detalles sobre el error.
Atención:
  • Sólo se cancelan las transacciones interrumpidas en la base de datos especificada.
  • Las transacciones en curso no se cancelan.
<Connection>: Variable de tipo Connection
Nombre de la variable de tipo Conexión que describe la conexión a utilizar.
<Database>: Cadena de caracteres
Nombre de la base de datos correspondiente. Se produce un error si este parámetro corresponde a una cadena vacía (""").

Cancelar una transacción específica, relacionada con una conexión Ocultar los detalles

<Result> = <Connection>.TransactionCancel(<Transaction to cancel>)
<Result>: Booleano
  • True STRIMEULB si la transacción fue cancelada,
  • False si se produce un problema. HErrorInfo devuelve más detalles sobre el error.
Atención: Sólo se cancelan las transacciones interrumpidas en la base de datos especificada.
<Connection>: Variable de tipo Connection
Nombre de la variable de tipo Conexión que describe la conexión a utilizar.
<Transaction to cancel>: Entero
Identificador de la transacción que se cancelará para la conexión especificada. Este identificador es devuelto por <Variable Connection>.TransactionList.
Observaciones

Ubicación y acceso a los archivos de datos

Antes de llamar a la función <Variable Connection>.TransactionCancel, los archivos de datos manipulados por la transacción cancelada deben ser:

Detección de un error

Cuando el programa detecta un error (gestión de errores con WHILE EXCEPTION, por ejemplo), la función <Variable Connection>.TransactionCancel permite:

Consejo: Restaurar la consistencia de la base de datos

Si se produce una avería (corte de corriente, reinicio,...) durante una transacción, los archivos de datos pueden dañarse.: la transacción no fue ni validada ni cancelada. El archivo de la transacción se encuentra todavía en el equipo.
Para restaurar la consistencia de la base de datos, debe proponer en su aplicación:
Observación: esta operación puede ser bastante larga (según el número de operaciones realizadas en la transacción).

Casos de error

  • Operaciones de anidamiento: Las transacciones no se pueden anidar (es decir, no se puede llamar a <variable Connection>.TransactionStart o <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 "Lectura no comprometida".

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.. Debe llamar a <variable Connection>.TransactionStart (o <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: wd290hf.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: 06/07/2023

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