Function trigger

di il
1 risposte

Function trigger

Ciao a tutti,
ho un problema con una funzione di un trigger che chiama un'altra funzione, ma mi dice che quest'ultima è inesistente, forse perchè non postgresql la salva nell'elenco delle funzioni che sono separate dalle funzioni trigger della tabella. Mi sembra strano che una trigger function non possa chiamare altre funzioni o non le veda. Ho provato a spostarla, ma non ci riesco. Non riesco a capire dove sia l'errore. Allego le immagini del codice. Grazie dell'attenzione.
Allegati:
9085_796b67f088565b650d99d51fbe6c1619.png
9085_796b67f088565b650d99d51fbe6c1619.png

9085_6acb67476a76373e270e9017862378f5.png
9085_6acb67476a76373e270e9017862378f5.png

9085_9b49f5c8d57120435377fad5c163b48d.png
9085_9b49f5c8d57120435377fad5c163b48d.png

9085_236e2a23c22fbfa53cf8945566338cbc.png
9085_236e2a23c22fbfa53cf8945566338cbc.png

9085_ffe8abb4c228dae1a5d7e1e1824afbc1.png
9085_ffe8abb4c228dae1a5d7e1e1824afbc1.png

1 Risposte

  • Re: Function trigger

    CREATE OR REPLACE FUNCTION public."homeORoffFun"(
    value1 numeric,
    value2 numeric)
    RETURNS numeric AS
    $BODY$
    begin
    if (value1 is not null ) then return value1;
    else return value2;
    end if;
    end;

    $BODY$
    LANGUAGE plpgsql VOLATILE
    COST 100;
    ALTER FUNCTION public."homeORoffFun"(numeric, numeric)
    OWNER TO postgres;



    CREATE OR REPLACE FUNCTION public."Default_Home_Ph"()
    RETURNS trigger AS
    $BODY$
    begin
    if (new."Emp" is not null)then
    update "Employees"
    set new."Home_Ph"= homeORoffFun(new."Home_Ph", new."Office_Ph");
    else
    raise notice 'Emp is null';
    end if;
    return new;
    end;
    $BODY$
    LANGUAGE plpgsql VOLATILE
    COST 100;
    ALTER FUNCTION public."Default_Home_Ph"()
    OWNER TO postgres;


    CREATE TRIGGER "Default_Home_Ph"
    BEFORE INSERT
    ON public."Employees"
    FOR EACH ROW
    EXECUTE PROCEDURE public."Default_Home_Ph"();


    insert into "Employees" values('io', 1234, 1, 080123456, 080987654);


    OUTPUT:
    ERRORE: la funzione homeorofffun(numeric, numeric) non esiste
    LINE 2: set new."Home_Ph"= homeORoffFun(new."Home_Ph", new."Offic...
    ^
    HINT: Nessuna funzione trovata con nome e tipi di argomenti forniti. Potrebbe essere necessario convertire i tipi esplicitamente.
    QUERY: update "Employees"
    set new."Home_Ph"= homeORoffFun(new."Home_Ph", new."Office_Ph")
    CONTEXT: funzione PL/pgSQL "Default_Home_Ph"() riga 4 a istruzione SQL
    ********** Error **********

    ERRORE: la funzione homeorofffun(numeric, numeric) non esiste
    SQL state: 42883
    Hint: Nessuna funzione trovata con nome e tipi di argomenti forniti. Potrebbe essere necessario convertire i tipi esplicitamente.
    Context: funzione PL/pgSQL "Default_Home_Ph"() riga 4 a istruzione SQL
Devi accedere o registrarti per scrivere nel forum
1 risposte