4D v16.3

Trigger event

Página Inicial

 
4D v16.3
Trigger event

Trigger event 


 

Trigger event -> Resultado 
Parâmetro Tipo   Descrição
Resultado  Inteiro longo in 0 = Fora de um ciclo de execução de trigger; 1 = Guardar um novo registro; 2 = Guardar um registro existente; 3 = Apagar um registro.

Quando chamado de dentro de um trigger, o comando Trigger event retorna um valor numérico que indica o tipo do evento do banco, em outras palavras, a razão pela qual é chamado o trigger.

As seguintes constantes pré-definidas são oferecidas pelo 4D no tema Trigger Events:

Constante Tipo Valor
On Deleting Record Event Inteiro longo 3
On Saving Existing Record Event Inteiro longo 2
On Saving New Record Event Inteiro longo 1


Dentro de um trigger, se realizar operações de banco de dados sobre vários registros, pode encontrar condições (geralmente registros bloqueados) que impedem ao trigger executar corretamente as operações para as quais for chamado. Um exemplo desta situação é a atualização de vários registros na tabela [Produtos] quando se adiciona um registro a tabela [Faturas]. Neste ponto, deve parar as operações do banco e devolver um erro de maneira que o processo chamante saiba que a petição não pode  ser realizada. O  processo chamante deve então poder cancelar, durante a transação, as operações incompletas realizadas pelo trigger. Quando isso acontece, você precisa saber, de dentro do trigger, se você estiver em uma transação antes mesmo de tentar fazer algo. Para fazer isto, utilize o comando In transaction.

Em 4D não há limite, além da quantidade da memória disponível, para a chamada de triggers em cascada. Para otimizar a execução de um trigger, pode escrever o código de seus triggers dependendo não apenas do evento do banco, mas também do nível da chamada quando os triggers são chamados em cascada. Por exemplo, durante o evento de banco deletion para a tabela [Faturas], pode não realizar a atualização do campo [Clientes] Vendas brutas se a eliminação do registro da tabela [Faturas] é parte da eliminação em cascada de faturas relacionadas com o registro na tabela [Clientes] que está sendo eliminado. Para fazer isto, utilize os comandos Trigger level e TRIGGER PROPERTIES.

Exemplo  

Utilize o comando Trigger event para estruturar seus triggers desta maneira:

  // Trigger da tabela [qualquerTabela]
 C_LONGINT($0)
 $0:=0 // Tenha certeza que a petição do banco será concedida
 Case of
    :(Trigger event=On Saving New Record Event)
  // Executar as ações apropriadas para guardar um novo registro
    :(Trigger event=On Saving Existing Record Event)
  // Executar as ações apropriadas para guardar um registro existente
    :(Trigger event=On Deleting Record Event)
  // Executar as ações apropriadas para a eliminação de um registro
 End case



Ver também 

In transaction
Trigger level
TRIGGER PROPERTIES
Triggers

 
PROPRIEDADES 

Produto: 4D
Tema: Triggers
Número 369

This command can be run in preemptive processes

 
HISTÓRIA 

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

 
ARTICLE USAGE

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