Обсуждение: trigger trouble -- procedure not found
I'm having trouble creating a trigger. First i'm creating a function, add_to_search in PL/pgSQL. \df verifies the existance of this function:smallint | add_to_search | text, text, text, integer but when I call: CREATE TRIGGER item_insert_search_add AFTER INSERT ON item FOR EACH ROW EXECUTE PROCEDURE add_to_search (name, description,reason, node_id); I get: ERROR: CreateTrigger: function add_to_search() does not exist What am I missing here? It seems to me that I'm missing something very simple, but I can't figure out what it is for the life of me. Kevin Way
On Sep 14, Kevin Way wrote: > I'm having trouble creating a trigger. First i'm creating a function, > add_to_search in PL/pgSQL. > > \df verifies the existance of this function: > smallint | add_to_search | text, text, text, integer > -- We can verify all the functions which wont return 'OPAQUE'. > but when I call: > > CREATE TRIGGER item_insert_search_add AFTER INSERT > ON item FOR EACH ROW > EXECUTE PROCEDURE add_to_search (name, description, reason, node_id); > > I get: > ERROR: CreateTrigger: function add_to_search() does not exist The function executed by a trigger should by default return a record. ie.. the return type should be 'OPAQUE'. Try the above.. Hope this will work. > > What am I missing here? It seems to me that I'm missing something very > simple, but I can't figure out what it is for the life of me. > > Kevin Way > > ---------------------------(end of broadcast)--------------------------- > TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org >
On Fri, 14 Sep 2001, Kevin Way wrote: > I'm having trouble creating a trigger. First i'm creating a function, > add_to_search in PL/pgSQL. > > \df verifies the existance of this function: > smallint | add_to_search | text, text, text, integer > > but when I call: > > CREATE TRIGGER item_insert_search_add AFTER INSERT > ON item FOR EACH ROW > EXECUTE PROCEDURE add_to_search (name, description, reason, node_id); > > I get: > ERROR: CreateTrigger: function add_to_search() does not exist > > What am I missing here? It seems to me that I'm missing something very > simple, but I can't figure out what it is for the life of me. Trigger functions return opaque and take no arguments. Arguments given on the create trigger statement are passed in a special fashion. (I believe for plpgsql you'd look at TG_NARGS and TG_ARGV[])
Thank you. Later checking showed that these requirements were listed in the first sentence of the relevant page. Everything works like a champ now. I've made a small donation to the EFF and to the Red Cross as a minor thanks for your prompt help. Kevin Way