Control reached end of trigger procedure without RETURN

Поиск
Список
Период
Сортировка
От MoNiLlO
Тема Control reached end of trigger procedure without RETURN
Дата
Msg-id 397A0940-896A-4DEF-873A-907976E8400B@adinf.es
обсуждение исходный текст
Список pgsql-sql
Buenos días:
Tengo una función que se dispara en un trigger cuya finalidad es; crear un registro en otra tabla o actualizarlo y
devolviendoel id del registro creado/modificado para guardarlo en la tabla desde la que se llama. Intentaré explicarlo
mejor:

tablaA --> Es la que dispara el trigger y en la que quiero guardar el id del registro modificado / creado en la tabla
B.
tablaB --> Digamos que es una tabla resumen de la tablaA y se mantiene desde el trigger de la misma, creando
modificandoy/o borrando los registros. 

Finalidad --> Eso, actualizar la tablaB desde la A y guardar en el registro de de la tablaA a que registro de la tablaB
"pertenece".

Cuando hago el insert me devuelve el error del asunto

Control reached end of trigger procedure without RETURN

y me indica la línea correspondiente al INSERT.
¿Acaso no continúa el flujo if (not found) y debería  hacer el return NEW tras el insert? ¿y lo mismo en el update del
exception?

Agradezco de antemano vuestro tiempo y ayudas.

Un saludo.


P.D. Estructura de la función.


DECLAREid_tablaB     integer;    -- Id de la tabla B.
BEGINIF (TG_OP = 'DELETE') THEN    -- Descontar valores
ELSIF (TG_OP = 'UPDATE') THEN    -- Modificar valores.
ELSIF (TG_OP = 'INSERT') THEN    -- Asignar valores
END IF;
-- Update con nuevos valores y retornamos el id para actualizar detalle.UPDATE     tablaBSET    campo1=valor1,
campo2=valor2WHERE   tablaA_id=NEW.tblaB_id RETURNING tablaB_id INTO id_tablaB; 
-- Si no existe, hacemos el insert y retornamos el id para actualizar detalle.IF (NOT FOUND) THEN    BEGIN        -- No
existÌael registro y lo creamos. 

--
-- AQUÍ DEVUELVEL EL ERROR.
--        INSERT INTO     tablaB (                campo1,                 campo2)        VALUES         ( valor1,
        valor2 )        RETURNING     tablaB_id INTO id_tablaB;            EXCEPTION         WHEN UNIQUE_VIOLATION THEN
      UPDATE     tablaB        SET    campo1=valor1,            campo2=valor2        WHERE    tablaA_id=NEW.tblaB_id
    RETURNING tablaB_id INTO id_tablaB;    END;END IF; 
-- Borrado de ventas_imp si el resumen del % y factura es 0.DELETE FROM    tablaB WHERE         tablaA_id=id_tablaA AND
(campo3=0OR campo3 IS NULL); 
-- Guardamos el id de la tabla ventas_imp y retornamos el record modificado.NEW.tablaB_id := id_tablaBreturn NEW;
END




В списке pgsql-sql по дате отправления:

Предыдущее
От: Jasen Betts
Дата:
Сообщение: Re: Issue with postgres connectivity
Следующее
От: Jasen Betts
Дата:
Сообщение: Re: question about reg. expression