4D v12.4

Database event

Página Inicial

 
4D v12.4
Database event

 

Database event 


 

Database 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 Database 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 no tema Eventos da base de dados:

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 chamador 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 cascata. 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 cascata. 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 cascata 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 Database 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
    :(Database event=On Saving New Record Event)
  ` Executar as ações apropriadas para guardar um novo registro
    :(Database event=On Saving Existing Record Event)
  ` Executar as ações apropriadas para guardar um registro existente
    :(Database event=On Deleting Record Event)
  ` Executar as ações apropriadas para a eliminação de um registro
 End case

 
PROPRIEDADES 

Produto: 4D
Tema: Triggers
Número 369

 
HISTÓRIA 

Modificado: 4D v11 SQL Release 2

 
VER TAMBÉM 

In transaction
Trigger level
TRIGGER PROPERTIES
Triggers