Triggerfunktion (Fehlermeldung)

Servus Zusammen,

ich häng bei meiner Funktion an einer wahrscheinlich einfachen Fehlermeldung.
Die Funktion soll Benutzer daran hindern auf ihren eigenen Artikel bieten zu können.
Sobald die Artikel_id in der Tabelle Auktion und Artikel gleich sind und die Anbieter und Käufer Id ebenfalls soll der INSERT bzw das UPDATE nicht zugelassen werden.

Die Fehlermeldung, die ich bekomme ist folgende:

psql:data_insertion.sql:15: ERROR:  control reached end of trigger procedure without RETURN
KONTEXT:  PL/pgSQL function "gebot"

Der INSERT der ausgeführt wird ist der hier:

INSERT INTO auktion(aktuellerpreis, festpreis, startzeit, endzeit, artikel_id, kategorie_id, kaeufer_benutzer_id)VALUES (0.00, 30.00, current_timestamp(0), current_timestamp(0) + interval '7 days', 1, 1, 2);



CREATE FUNCTION gebot() RETURNS trigger AS '
    DECLARE 
    lv_au_rec auktion%ROWTYPE;
    lv_ar_rec artikel%ROWTYPE;
    BEGIN
    FOR lv_au_rec IN SELECT * FROM auktion LOOP
    FOR lv_ar_rec IN SELECT * FROM artikel
        LOOP
        IF lv_au_rec.artikel_id <> lv_ar_rec.id AND lv_au_rec.kaeufer_benutzer_id = lv_ar_rec.anbieter_benutzer_id THEN
               RAISE NOTICE ''Sie dürfen als Anbieter nicht auf ihren eingenen Artikel bieten'';
    RETURN NULL;
    ELSE RETURN NEW;
    END IF;
    END LOOP;
    END LOOP;

   END;' 
   LANGUAGE plpgsql;

CREATE TRIGGER gebote BEFORE INSERT OR UPDATE ON auktion
    FOR EACH ROW EXECUTE PROCEDURE gebot();

Danke im Vorraus für ein paar Tipps

nach kurzen querlesen fehlt da, siehe fehlermeldung, ein RETURN. Und zwar nach dem letzten end loop, würd ich sagen …

Btw.: es gibt eine FAQ bzgl. SELECT * …

Andreas

Schon klar, das kam mir auch!
Die Frage die sich mir stellt ist, was ich da mit einem RETURN anfangen soll.
Ich habe vorher alle Fälle abgefangen! Ein RETURN an dieser Stelle würde doch meine FOR Schleißen zunichte machen.
Oder denk ich komplett falsch.

Woher weiss der Parser, das du dort schon ein RETURN hast? Füg einfach als letzte Anweisung noch eines ein.

Oh, und btw.: nimm $$ statt den Hochkommas.

Alles klar dankeschön! :wink: