GARANTIR DESCONTO

Fórum Trigger Before Position 0 x After Position 0 #51924

02/08/2005

0

Tenho um trigger before e outro after para a mesma tabela.
Elas funcionam separadamente, mas quando deixo as duas ativadas, a segunda não funciona.
Deixei os dois na position 0. Já coloquei o trigger after na position 1 e também não funcionou.
O que pode estar errado?


Adrinei

Adrinei

Responder

Posts

02/08/2005

Gandalf.nho

O que essas triggers fazem?


Responder

Gostei + 0

02/08/2005

Adrinei

Gandalf.nho,

Tenho uma tabela de horário (para cálculo de cartão ponto). Esta tabela possui os horários de entrada e saída, além dos períodos (manhã e tarde).
A primeira trigger calcula a tolerância de entrada antes e depois da entrada e da saída. Ex.:
=> Entrada ´08:00´ Tolerância antes ´00:05´ Tolerância depois ´00:05´ então a trigger before, calcula ´08:00´ - ´00:05´ e retorna´ 07:55´...
=> Saída ´12:00´. Para saber a tolerância, preciso da entrada do período posterior. Aí está o problema. Quando tenho a saída ´12:00´ eu ainda não sei a entrada ´13:00´, por exemplo, que vai estar no 2º período.

Por isso tenho o trigger after insert and update.
Se período > 1 eu calculo a saída. Ex.: Entrada do 2º período ´13:00´ menos a saída do 1º período ´12:00´.


Responder

Gostei + 0

02/08/2005

Afarias

A posição aqui nào interessa, position é para determinar a ordem de execução de triggers no mesmo evento -- o q não é o seu caso.

O q vc tem q saber aqui é a diferença entre BEFORE e AFTER

como o nome sugere, as triggers BEFORE ocorrem ANTES da alteração do registro (seja Insert, Update ou Delete) -- sendo assim, essas triggers podem alterar/incluir dados do registro ou até mesmo cancelar a operação.

triggers AFTER ocorrem DEPOIS q a alteração no registro é efetuada, sendo assim, servem para ´diaparar´ outros processos baseados em algo q ´já está feito´.


T+


Responder

Gostei + 0

03/08/2005

Adrinei

| triggers AFTER ocorrem DEPOIS q a alteração no registro é efetuada, sendo assim, servem para ´diaparar´ outros processos baseados em algo q ´já
| está feito´.

Exatamente Farias. Estou utilizando o before para gravar informaçoes em outras colunas no mesmo registro. Porém eu preciso alterar informações em outro registro, por isso uso o after, e dentro do after, utilizo update.
Suponho que não seja possível usar update em um trigger before...

Registro - HoraEntrada - HoraSaída - TolerânciaDepois
01 - 08:00 - 12:00 - ? (´13:00´ - ´12:00´)
02 - 13:00 - 18:00 -

Eu só sei a tolerância do 1º, quando cadastro o segundo registro.

Abraço.


Responder

Gostei + 0

03/08/2005

Afarias

vc pode sim atualizar outro registro a partir de uma trigger em AFTER, eu entendi +/- o q vc deseja, post os códigos das triggers before e after para ver o q está errado.


T+


Responder

Gostei + 0

05/08/2005

Mordred

Como faço para cancelar a ação de uma Trigger (Caso ocorra uma exceção durante o processamento, por exemplo)? Existe alguma comando específico para fazer isso, ou basta eu chamar uma Exception?


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar