Re: [firebase-br] Trigger não tá fazendo o UPDATE

Fagner Araujo fagaraujo em yahoo.com.br
Sex Dez 30 14:05:40 -03 2005


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


______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
Para editar sua configuração na lista, use o endereço http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
Para consultar mensagens antigas: http://firebase.com.br/pesquisa



		
---------------------------------
 Yahoo! doce lar. Faça do Yahoo! sua homepage.


Mais detalhes sobre a lista de discussão lista