[firebase-br] Ajuda com trigger
Rodrigo - Winsoft
rodrigo em netalfa.com.br
Qua Dez 7 12:12:24 -03 2005
Bom dia galera !!!
Estou com o seguinte problema:
Tenho as seguintes tabelas
/* ARMAZENAR DADOS DE UMA TRANSFERENCIA */
CREATE TABLE TRANSF (
CTRANSF D_CODIGO NOT NULL,
CEMPRESA D_CODIGO,
LANCAMENTO CHAR(1) NOT NULL,
DATA D_DATA,
OBS D_BLOB_TEXTO,
CEMP_LOJA D_CODIGO,
TIPO CHAR(1),
ENVIADO D_SIMNAO DEFAULT 'N' NOT NULL,
DATA_INC D_DATA,
DATA_ALT D_DATA,
LANCADO D_SIMNAO DEFAULT 'N' NOT NULL /* PODE SER N OU S*/
);
/* ARMAZENAR OS PRODUTOS TRANSFERIDOS */
CREATE TABLE TRANSF2 (
CTRANSF2 D_CODIGO,
CTRANSF D_CODIGO,
CEMPRESA D_CODIGO,
LANCAMENTO CHAR(1),
TIPO CHAR(1),
CPROD D_CODPRODUTO,
QTD NUMERIC(18,2) DEFAULT 0 NOT NULL,
VENDIDO D_SIMNAO DEFAULT 'N' NOT NULL,
ENVIADO D_SIMNAO DEFAULT 'N' NOT NULL
);
/* RELAÇÃO DE PRODUTOS POR LOJA TRANSFERIDO */
CREATE TABLE TRANSF_REC (
CEMPRESA D_CODIGO,
LANCAMENTO CHAR(1) NOT NULL,
CEMP_LOJA D_CODIGO,
TIPO CHAR(1) NOT NULL,
CPRODUTO D_CODPRODUTO,
QTD NUMERIC(18,3) DEFAULT 0 NOT NULL
);
PRECISO FAZER O SEGUINTE:
QDO MUDAR O VALOR DO CAMPO LANCADO DE N PARA S TENHO Q VERIFICAR SE O PRODUTO EXISTE NA TABELA
DE TRANSF_REC. SE NÃO EXISITIR TENHO Q CADASTRAR CASO CONTRÁRIO TENHO Q AUMENTAR A QTD. DOO
PRODUTOS...
A TRIGGER Q TENHO É ESSA, SÓ Q ESTÁ DANDO ERRO E NÃO CONSIGO FAZER UM LOOP DO INICIO AO FIMA
DA TABELA DE TRANSF2
as
begin
IF (UPDATING) THEN
BEGIN
IF ((OLD.LANCADO = 'N') AND (NEW.LANCADO = 'S')) THEN
BEGIN
for select CPROD, QTD from TRANSF2 where TRANSF2.CTRANSF = CTRANSF
order by CPROD
do
BEGIN
UPDATE TRANSF_REC SET QTD = (QTD + TRANSF2.QTD)
WHERE TRANSF_REC.CEMPRESA = CEMPRESA
AND TRANSF_REC.LANCAMENTO = LANCAMENTO
AND TRANSF_REC.CEMP_LOJA = CEMP_LOJA
AND TRANSF_REC.TIPO = TIPO
AND TRANSF_REC.CPRODUTO = CPRODUTO;
END
END
END
end
SERA Q ALGUEM PODERIA ME AJUDAR??
DESDE JÁ AGRADEÇO...
Obrigado.
Rodrigo Pedroso
Winsoft Informática - (14) 3664-1586
rodrigo em netalfa.com.br
Mais detalhes sobre a lista de discussão lista