Database event

4D - Documentation   Français   English   German   Español   English   4D v11 SQL, Comandos por temas   4D v11 SQL, Lista alfabética de comandos   4D v11 SQL, Constantes por temas   Regresar   Anterior   Siguiente

versión 11.2 (Modificado)


Database event Entero largo

ParámetroTipoDescripción
Este comando no necesita parámetros
ResultadoEntero largo0  Fuera de todo evento de trigger
1  Al guardar un nuevo registro
2  Al guardar un registro existente
3  Al borrar un registro

Descripción

El comando Database event se llama en un trigger y devuelve un valor numérico que indica el tipo del evento de la base, en otras palabras, la razón por la cual se invoca el trigger.

4D ofrece las siguientes constantes predefinidas:

ConstanteTipoValor
On Saving New Record EventEntero largo1
On Saving Existing Record EventEntero largo2
On Deleting Record EventEntero largo3

Dentro de un trigger, si efectúa operaciones de base de datos sobre varios registros, puede encontrar condiciones (generalmente registros bloqueados) que impiden al trigger ejecutar correctamente las operaciones para las cuales es llamado. Un ejemplo de esta situación es la actualización de varios registros en la tabla [Productos] cuando se añade un registro a la tabla [Facturas]. En este punto, debe detener las operaciones de la base y devolver un error de manera que el proceso llamante sepa que la petición no puede llevarse a cabo. Luego el proceso llamante debe poder cancelar, durante la transacción, las operaciones incompletas efectuadas por el trigger. Cuando se produce este tipo de situación, usted debe saber en el trigger si está en transacción antes de intentar hacer algo. Para hacer esto, utilice el comando In transaction.

En 4D, no hay límite, a parte de la memoria disponible, para la llamada de triggers en cascada. Para optimizar la ejecución de un trigger, puede escribir el código de sus triggers dependiendo no sólo del evento de la base, sino también del nivel de la llamada cuando los triggers se llaman en cascada. Por ejemplo, durante el evento de base deletion para la tabla [Facturas], puede no efectuar la actualización del campo [Clientes] Ventas brutas si la eliminación del registro de la tabla [Facturas] es parte de la eliminación en cascada de facturas relacionadas con el registro en la tabla [Clientes] que está siendo eliminado. Para hacer esto, utilice los comandos Trigger level y TRIGGER PROPERTIES.

Ejemplo

Utilice el comando Database event para estructurar sus triggers de esta manera:

      ` Trigger de la tabla [toda tabla]
   C_LONGINT($0)
   $0:=0   ` Asegurarse de que la petición de la base será concedida
   Case of
      : (Database event=On Saving New Record Event)
         ` Ejecutar las acciones apropiadas para guardar un nuevo registro 
      : (Database event=On Saving Existing Record Event)
         ` Ejecutar las acciones apropiadas para guardar un registro existente
      : (Database event=On Deleting Record Event)
         ` Ejecutar las acciones apropiadas para la eliminación de un registro
   End case

Ver también

In transaction, Trigger level, TRIGGER PROPERTIES, Triggers.


4D - Documentation   Français   English   German   Español   English   4D v11 SQL, Comandos por temas   4D v11 SQL, Lista alfabética de comandos   4D v11 SQL, Constantes por temas   Regresar   Anterior   Siguiente