[firebase-br] Trigger não tá fazendo o UPDATE
Romulo Oliveira
romulocpd em yahoo.com.br
Sex Dez 30 14:12:28 -03 2005
Fagner,
Os registros existem. Criei alguns registros somente pra teste. E com a
Integridade ta tudo certinho pois se entrei na tabela MOV_ESTOQUE com
EMPRESA, PRODUTO, COR, TAMANHO é pq isso existe em ESTOQUE pois tenho
uma FK para isso.
E o valor nao ta sendo gerado pois qd jogo na tabela LOG ele lista os
valores certinhos:
> EMPRESA = 4 PRODUTO = 10 COR = 1TAMANHO = 1 SALDO ATUAL = 5180.0000
Tive que mudar, tirei a Trigger e joguei a tualização na Stored de
INCLUIRMOVIMENTOESTOQUE daí ficou certinho.
Vlw!
Romulo
Fagner Araujo wrote:
> O que pode esta acontecendo é que na sua tabela ESTOQUE pode não existir nenhum registro com essas informações:
>
> ETQ_EMPRESA = NEW.MES_EMPRESA AND
> ETQ_PRODUTO = NEW.MES_PRODUTO AND
> ETQ_COR = NEW.MES_PRODUTO AND
> ETQ_TAMANHO = NEW.MES_TAMANHO;
>
> que são a base do WHERE do UPDATE.
> A outra possibilidade é uma TRIGGER na tabela ESTOQUE esta redefinindo a valor do campo.
> Faça essas checagens que você encontrará a falha.
>
> Atenciosamente,
> Fagner Araújo.
>
> Romulo Oliveira <romulocpd em yahoo.com.br> escreveu: Olá amigos,
>
> Tenho uma tabela MOV_ESTOQUE onde ela atualiza o estoque do produto em
> outra tabela. Cada lançamento de MOV_ESTOQUE eu digo o saldo anterior,
> quantidade movimentada e o saldo atual. A trigger pega este campo SALDO
> ATUAL e joga na tabela ESTOQUE.
>
> A Trigger tá assim:
>
> CREATE TRIGGER TG_AOINCMES FOR MOV_ESTOQUE
> ACTIVE AFTER INSERT POSITION 0
> AS
> begin
>
> INSERT INTO LOG VALUES ('EMPRESA = ' || CAST(NEW.MES_EMPRESA AS
> VARCHAR(10)) || ' PRODUTO = ' || CAST(NEW.MES_PRODUTO AS VARCHAR(10)) ||
> ' COR = ' || CAST(NEW.MES_COR AS VARCHAR(10)) || 'TAMANHO = ' ||
> CAST(NEW.MES_TAMANHO AS VARCHAR(10)) || ' SALDO ATUAL = ' ||
> CAST(NEW.MES_SALDOATUAL AS VARCHAR(20)));
>
> UPDATE
> ESTOQUE
> SET
> ETQ_ATUAL = NEW.MES_SALDOATUAL
> WHERE
> ETQ_EMPRESA = NEW.MES_EMPRESA AND
> ETQ_PRODUTO = NEW.MES_PRODUTO AND
> ETQ_COR = NEW.MES_PRODUTO AND
> ETQ_TAMANHO = NEW.MES_TAMANHO;
>
> END
>
> Vejam que coloquei eset INSERT numa tabela LOG só pra saber. O
> resultado tá assim (da tabela LOG):
>
> EMPRESA = 4 PRODUTO = 10 COR = 1TAMANHO = 1 SALDO ATUAL = 5180.0000
>
> Poxa, pelo comando ele diz a empresa, produto, cor, tamanho e o saldo.
> Tudo certinho! Porém o UPDATE ele nao ta executando.
>
> A minha tabela de MOV_ESTOQUE é assim:
>
> CREATE TABLE MOV_ESTOQUE (
> MES_CODIGO INTEGER NOT NULL,
> MES_EMPRESA INTEGER NOT NULL,
> MES_EMPRESAORIGEM INTEGER NOT NULL,
> MES_PRODUTO INTEGER NOT NULL,
> MES_COR INTEGER NOT NULL,
> MES_TAMANHO INTEGER NOT NULL,
> MES_DATALANC DATE NOT NULL,
> MES_TIPO CHAR(3) NOT NULL,
> MES_DOCUMENTO VARCHAR(20),
> MES_HISTORICO VARCHAR(60) NOT NULL,
> MES_SALDOANTERIOR NUMERIC(18,4) DEFAULT '0',
> MES_QTDLANC NUMERIC(18,4) DEFAULT '0',
> MES_SALDOATUAL NUMERIC(18,4) DEFAULT '0'
> );
>
> Po, já tentei de tudo. Fiz a tabela de log pra ver e ele pega os
> valores direito e os registros existem certinho na tabela ESTOQUE.
> Vejam a tabela ESTOQUE:
>
> CREATE TABLE ESTOQUE (
> ETQ_EMPRESA INTEGER NOT NULL,
> ETQ_PRODUTO INTEGER NOT NULL,
> ETQ_COR INTEGER NOT NULL,
> ETQ_TAMANHO INTEGER NOT NULL,
> ETQ_PRECOCUSTO DECIMAL(10,2),
> ETQ_FRETE DECIMAL(6,2),
> ETQ_IPI DECIMAL(6,2),
> ETQ_DIFICMS DECIMAL(6,2),
> ETQ_DESPOPER DECIMAL(6,2),
> ETQ_ICMS DECIMAL(6,2),
> ETQ_LUCRO DECIMAL(6,2),
> ETQ_PROMOCAO DECIMAL(6,2),
> ETQ_VALIDADEPROMOCAO DATE,
> ETQ_PRECOCUSTOGERENCIAL DECIMAL(10,2),
> ETQ_PRECOVENDASUGERIDO DECIMAL(10,2),
> ETQ_PRECOVENDA DECIMAL(10,2),
> ETQ_PRECOVENDAPROMOCAO DECIMAL(10,2),
> ETQ_ATUAL DECIMAL(18,4) default 0,
> ETQ_RESERVADO DECIMAL(18,4) default 0,
> ETQ_COMPRADO DECIMAL(18,4) default 0,
> ETQ_DISPONIVEL DECIMAL(18,4) default 0,
> ETQ_AVARIADO DECIMAL(18,4) default 0,
> ETQ_CONSIGNADO DECIMAL(18,4) default 0,
> ETQ_MINIMO NUMERIC(18,4) DEFAULT '0'
> );
>
> Vlw pessoal!
>
> Romulo
Mais detalhes sobre a lista de discussão lista