4D v16.3

Trigger event

Inicio

 
4D v16.3
Trigger event

Trigger event 


 

Trigger event -> Resultado 
Parámetro Tipo   Descripción
Resultado  Entero largo in 0 = Fuera de todo evento de trigger 1 = Al guardar un nuevo registro 2 = Al guardar un registro existente 3 = Al borrar un registro

El comando Trigger 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 del tema Eventos trigger:

Constante Tipo Valor
On Deleting Record Event Entero largo 3
On Saving Existing Record Event Entero largo 2
On Saving New Record Event Entero largo 1

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, 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 una eliminación del evento trigger 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 Trigger 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

 
PROPIEDADES 

Producto: 4D
Tema: Triggers
Número 369

This command can be run in preemptive processes

 
HISTORIA 

Modificado: 4D v11 SQL Release 2
Renombrar: 4D v13

 
ARTICLE USAGE

Manual de lenguaje 4D ( 4D v16)
Manual de lenguaje 4D ( 4D v16.1)
Manual de lenguaje 4D ( 4D v16.2)
Manual de lenguaje 4D ( 4D v16.3)