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 desencadenadores
  • Presentación
  • Creación de desencadenantes de servidor en el análisis
  • Condición previa
  • Tener en cuenta los desencadenantes del servidor
  • Procedimientos almacenados relacionado a un trigger
  • Comprobación de una Procedure almacenada llamada por un disparador
  • Manejo de los disparos del servidor a través de la programación
  • Las funciones de WLanguage
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
Disparadores de servidor
HFSQL Client/ServerDisponible solo con este tipo de conexión
Presentación
Los triggers del servidor son procedimientos almacenados ejecutados por el servidor antes o después de una operación de escritura realizada en un archivo de base de datos.
En cuanto a los triggers estándar, hay dos tipos de triggers de servidor disponibles:
  • Los activadores "ANTES":
    Un desencadenante "ANTES" se llama:
    • antes de ejecutar una función HFSQL ( HAdd , HModify , HDelete , ...).
    • antes de ejecutar una función para administrar el controles Tabla basado en un archivo de datos.
      Un activador "ANTES" puede utilizarse, por ejemplo, para comprobar la coherencia de los datos de las partidas de una Record. Con este tipo de disparador, se puede inicializar un Variable HFSQL para cancelar la ejecución de la función associated HFSQL.
  • Los activadores "DESPUÉS":
    Un desencadenante "DESPUÉS" se llama:
    • después de ejecutar una función HFSQL (excepto si el programa se interrumpió durante la ejecución de esta función).
    • después de ejecutar una función para administrar controles Tabla basada en un archivo de datos.
      Se puede utilizar un desencadenante "DESPUÉS" para gestionar la Process de errores, por ejemplo.
Características de los disparadores del servidor:
  • Varios disparadores del servidor pueden ser associated con el mismo archivo de datos.
  • Los triggers que se definen en el servidor, se tienen en cuenta independientemente de la ejecución de la aplicación cliente.. Cualquier nuevo trigger definido en el servidor se tiene en cuenta automáticamente.
  • Los disparadores del servidor se ejecutan:
Creación de desencadenantes de servidor en el análisis

Condición previa

Para crear un activador de servidor:
  • en la pestaña "Análisis", en el grupo "Creación", despliegue "Nuevo" y seleccione "Trigger".
  • seleccione "Nuevo activador" en el menú contextual del panel "Análisis" desplegable.
  • visualice la pestaña "Activadores HF" de la ventana del archivo de datos description y haga clic en "Crear un nuevo activador"
Estas diferentes opciones muestran la ventana de description del disparador del servidor.
La ventana de description de un disparador se utiliza para especificar:
  • en la pestaña "General:
    • el nombre del gatillo.
    • el WLanguage Procedure almacenado que es associated con el disparador.
    • el modo de liberación del trigger (ANTES o DESPUÉS de la ejecución de las funciones HFSQL).
    • las funciones HFSQL que liberarán el trigger.
  • en la pestaña "General:
    • los archivos de datos associated con el disparador.
Observación: Los disparadores creados son Visible:
  • en el panel de análisis.
  • en el gráfico de análisis directamente: si un servidor dispara un associated con un archivo de datos, se muestra un Icon específico: .

Tener en cuenta los desencadenantes del servidor

Los triggers del servidor creados en el análisis se crean en el servidor:
Los triggers instalados en el servidor serán automáticamente tenidos en cuenta por las aplicaciones cliente.

Procedimientos almacenados relacionado a un trigger

Un "disparador" almacenado Procedure no acepta ningún parámetro. Sin embargo, algunas variables de estado HFSQL se colocan antes de cada llamada:
H.Nombre de archivoCadena de caracteres: Nombre lógico del archivo de datos cuyo disparador está activado.
H.AcciónCarácter inicializado a "A" para un disparo Antes y a "P" para un disparo Después.
Función de activación H.Cadena de caracteres: Nombre de la función HFSQL que activó el trigger.
H.ToDoDurante la ejecución de un trigger anterior:
  • cancelar la ejecución de la función HFSQL asignando "A" al estado HFSQL Variable: H.ToDo = "A". En este caso, la acción no se realiza y la función (HAdd, HModify, etc.) devuelve True (sin error).
  • cancelar la ejecución de la función HFSQL actual asignando "E" al estado HFSQL Variable: H.ToDo = "E". En este caso, la acción no se realiza y la función (HAdd, HModify, etc.) devuelve False. El mensaje de error es el siguiente: "La acción en el archivo XXX fue interrumpida por el disparador".

Observaciones:
  • Cuando un trigger "BEFORE" y un trigger "AFTER" son associated con una función HFSQL, si "BEFORE" cancela la ejecución de la función HFSQL (poniendo h.ToDo a "A"), "AFTER" no se ejecuta.
  • En el código del Procedure almacenado se utiliza la palabra clave MiArchivo para identificar y manipular el nombre del archivo de datos sobre el que se ha utilizado el activador.
Importante: Para que un Procedure almacenado iniciado desde un trigger del servidor pueda acceder a los datos, debe utilizar HDeclareExternal. Esta función permite declarar las fuentes de datos que se utilizarán en los procesos de la Procedure almacenada.
De hecho, cuando una Procedure almacenada se inicia desde el Centro control HFSQL, no hay ningún análisis actual: los datos de HFSQL Client/Server no son inmediatamente accesibles.
Si no se utiliza HDeclareExternal en el código del Procedure almacenado, el Procedure provocará un error fatal, notificado en el registro de eventos del sistema.

Comprobación de una Procedure almacenada llamada por un disparador

Para hacer la prueba de un Procedure almacenado:
  1. En el panel de análisis, seleccione la Procedure almacenada cuya prueba debe ser ejecutada.
  2. Seleccione "Ejecutar la prueba Procedure" en el menú contextual del Procedure almacenado.
  3. La ventana para introducir los parámetros de la Procedure se muestra. En esta ventana, usted puede:
    • Escriba los parámetros de Procedure.
    • Ejecutar la prueba del procedimiento.
      Observación: esta ventana permite reiniciar la ejecución varias veces modificando los parámetros.
  4. Cuando se hace el test de Procedure:
    • Se propone una actualización del Procedure almacenado si es necesario.
    • El Procedure se inicia en el servidor.
    • El valor de retorno de Procedure se muestra si es necesario.
Notas/limitaciones:
  • El puerto de depuración es el puerto 27281 de Default. Este puerto debe estar abierto en el firewall. Este puerto puede modificarse en el programa Archivo HFConf.ini.
  • Para ejecutar la prueba de un Procedure almacenado, debe tener los derechos de depuración en la base de datos.
  • Las trazas utilizadas en los procedimientos almacenados se muestran en la pantalla de "Panel "Traza del depurador.
  • El código de Procedure almacenado puede contener puntos de ruptura: se iniciará el depurador.
  • Los elementos desplegados en el servidor se utilizan durante la prueba.
  • La función InTestMode devuelve True.
Manejo de los disparos del servidor a través de la programación

Las funciones de WLanguage

Se utilizan varias funciones para manipular que el servidor activa:
HActivateServerTriggerVuelve a activar un trigger de servidor desactivado previamente con la función HDeactivateServerTrigger.
HCreateServerTriggerAñade o modifica un disparador de servidor sobre un servidor HFSQL.
HDeactivateServerTriggerDesactiva un trigger del Servidor HFSQL Client/Server en un servidor.
HDeleteServerTriggerElimina el trigger de un servidor.
HDescribeServerTriggerAgrega o modifica un trigger del servidor.
HListServerTriggerEnumera los disparadores disponibles en una conexión o en los archivos de conexión.
HTriggerRecordBeforeRecupera el valor de la Record actual antes de que se ejecuten los disparadores.
Estas funciones son funciones avanzadas.
Versión mínima requerida
  • Versión 11
Esta página también está disponible para…
Comentarios
Haga clic en [Agregar] para publicar un comentario

Última modificación: 24/06/2023

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