[firebase-br] RES: Garantir uso de Trigger

rodrigo firebase em dominioinf.com.br
Ter Nov 13 10:11:09 -03 2018


Bom dia Gladiston, obrigado pela resposta!

Esse campo ordem, uso em varias tabelas, para ordenar eles no estoque.
Então teria que ser uma trigger mesmo ligada a um generator.

Em cada tabela que é atualizada nesse campo ordem, ela vai no mesmo generator e 
Insere a ordem atual acrescida de 1.

Ex. tabela itens  quando da um insert vai em gen_ordem_id e puxa a ordem atual e insere 1
      Tabela detailfiscal, no insert dessa tabela vai em gen_ordem_id e puxa a ordem atual e insere 1,
      Tabela acertoestoque... assim sucessivamente.

So não entendo pq ignorou a trigger em alguns casos específicos, visto que
Não é sempre que acontece o problema.

Grato



Enviado do Email para Windows 10

De: Gladiston Santana
Enviado:terça-feira, 13 de novembro de 2018 09:10
Para: FireBase
Assunto: Re: [firebase-br] Garantir uso de Trigger

Para a forma como criou a trigger tenho uma sugestão:
CREATE TABLE  ITENS  (
     ORDEM     BIGINT  GENERATED BY DEFAULT AS IDENTITY ,
(...)
    DATAHORA   CURRENT_TIMESTAMP  DEFAULT  NOT NULL,
    USUARIO VARCHAR(32) DEFAULT CURRENT_USER NOT NULL
);

Isso tornaria sua trigger inoqua ou desnecessária, já que pelo que entendi
você está preocupado que ao inserir tenha uma sequencia no campo ORDEM  e
um valor para DATAHORA.
Agora, no seu INSERT apenas deixe de mencionar esses 3 campos(ORDEM     ,
DATAHORA     ,  USUARIO   ) e eles assumirão o DEFAULT.

No update use:
UPDATE ITENS SET
(...)
    DATAHORA=CURRENT_TIMESTAMP ,
    USUARIO=CURRENT_USER
WHERE ( ORDEM  =xxxx)

Para que as atualizações os campos acima sejam atualizados também.
Use triggers com muito cuiidado, pois eles podem tornar a manutibilidade do
banco um desastre especialmente quando usam referencias cruzadas disparando
outras triggers.


Em qui, 8 de nov de 2018 às 12:43, rodrigo <firebase em dominioinf.com.br>
escreveu:

> Boa tarde a todos
>
> Tenho essa trigger que me ajuda a manter um controle de estoque por
> movimentação
>
> CREATE TRIGGER TR_ORDEM_ITENS FOR ITENS
> ACTIVE BEFORE INSERT POSITION 0
> AS
> BEGIN
> NEW.ORDEM = GEN_ID(GEN_ORDEM, 1);
> NEW.DATAHORA=CURRENT_TIMESTAMP;
> END
> ;
>
>
> Pela teoria, teria que preencher esses dois dados assim que executado um
> insert.
>
> Mas avaliando um erro na soma do estoque, percebi que esses campos que
> Deveriam ser preenchidos por essa trigger, estão nulos.
>
> Estou fazendo algo errado com essa trigger? Tem como garantir a execução.
>
> Grato
>
>
>
>
>
> ---
> Este email foi escaneado pelo Avast antivírus.
> https://www.avast.com/antivirus
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas:
> http://www.firebase.com.br/pesquisa_lista.html
>


-- 
A Vidy possui um Sistema de Gestão da Qualidade estruturado e com
Certificação ISO 9001 há mais de 10 anos, mantendo seu foco na Qualidade e
na Melhoria Continua.

Em março de2018 migramos com sucesso para a nova versão da ISO 9001.

Somos a única Empresa Brasileira de Engenharia de Laboratórios com
certificação com o Escopo Completo; desde Projetos, Engenharia, Construção,
Fabricação e Instalação de Laboratórios.
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para saber como gerenciar/excluir seu cadastro na lista, use: http://www.firebase.com.br/fb/artigo.php?id=1107
Para consultar mensagens antigas: http://www.firebase.com.br/pesquisa_lista.html




Mais detalhes sobre a lista de discussão lista