syntax error at or near "instead". Ich verzweifle

Hallo Forum

Ich möchte einen ganz einfachen Trigger instead of auf eine view bringen.

Ich habe erfolgreich eine Funktion geschrieben:
CREATE OR REPLACE FUNCTION update_planner() RETURNS TRIGGER AS $$
DECLARE id_number INTEGER;
BEGIN
SELECT INTO id_number max(lid)+1 FROM XDATAGROUPD8B41609 where lid = 4;

– Perform the required operation on emp, and create a row in emp_audit
– to reflect the change made to emp.

IF (TG_OP = ‘DELETE’) THEN
DELETE FROM emp WHERE empname = OLD.empname;
IF NOT FOUND THEN RETURN NULL; END IF;

OLD.last_updated = now();
INSERT INTO emp_audit VALUES(‘D’, user, OLD.*);
RETURN OLD;
ELSIF (TG_OP = ‘UPDATE’) THEN
UPDATE emp SET salary = NEW.salary WHERE empname = OLD.empname;
IF NOT FOUND THEN RETURN NULL; END IF;

NEW.last_updated = now();
INSERT INTO emp_audit VALUES(‘U’, user, NEW.*);
RETURN NEW;
ELSIF (TG_OP = ‘INSERT’) THEN
NEW.last_updated = now();
INSERT INTO XDATAGROUPD8B41609 VALUES (id_number, NULL, NULL, NEW.last_updated, NEW.last_updated, NEW.date, NEW.project, NEW.consultant, NEW.comment, NEW.status, NEW.conscountry, NEW.days, NULL, NULL, NEW.counttocountry, NEW.invoiced);
RETURN NEW;
END IF;
END;
$$ LANGUAGE plpgsql;

Die ist jetzt drin.

Nun will ich zu dieser Funktion den Trigger installieren:
CREATE OR REPLACE TRIGGER test INSTEAD OF INSERT OR UPDATE OR DELETE ON planprojcat FOR EACH ROW EXECUTE PROCEDURE update_planner();

Und es kommt immer die Fehlermeldung:
ERROR: syntax error at or near “instead”
LINE 1: create trigger test instead of insert on planprojcat for eac…

Ich bin am verzweifeln und lese seit Stunden manuals und Anleitungen - ohne Erfolg.
planprojcat ist eine view.
Ich benutze die Postgresql Version 8.4.7 auf Ubuntu.
Ich habe es über pgadmin 3 und über die psql Kommandozeile versucht.

Herzlichen Dank für eine schnelle Hilfe.
Gunnar

Laß mal beim Create Trigger das “OR REPLACE” weg …


Andreas

Leider keine Veränderung.
ixkimglobal2=# create trigger test instead of insert on planprojcat for each row execute procedure update_planner();
ERROR: syntax error at or near “instead”
LINE 1: create trigger test instead of insert on planprojcat …

Ich habe jetzt noch mal gegoogelt und den Befehl von Hand noch mal eingegeben (vielleicht sind tabs irgendwie reingerutscht).
Hilft alles nix. Ich bin ratlos.

HILFE!

Tja…

test=*# create view "planprojcat" as select * from data;
CREATE VIEW
test=*# create trigger test instead of insert on planprojcat for each row execute procedure update_planner();
ERROR:  function update_planner() does not exist
test=*# create function update_planner() returns trigger as $$begin return new; end;$$language plpgsql;
CREATE FUNCTION
test=*# create trigger test instead of insert on planprojcat for each row execute procedure update_planner();
CREATE TRIGGER

bei mir geht es …


Andreas