Thread: plpgsql notify trigger

plpgsql notify trigger

From
George Young
Date:
[postgres 7.0.2, x86 linux]

I am trying to use a trigger to perform an sql 'notify' command.
I do something like:

CREATE FUNCTION run_changed() RETURNS opaque AS '  declare     nm text;  begin      nm := NEW.run_name;      notify nm
   return null;  end;        
 
' LANGUAGE 'plpgsql';

create trigger run_changed_tr after update on runs for each row      execute procedure run_changed();


BUT, when I update the table, I get:  ERROR:  parser: parse error at or near "$1"     

It looks like the *name* (or it's alias here: $1.run_name), not the *value* of the variable nm,
is passwd to the notify command.  Since notify only takes a name, not a string,
I don't see how to proceed.  

Is there some way in plsql to construct a string and have it executed in sql?

disappointed in plsql,George

--
George Young,  Rm. L-204        gry@ll.mit.edu
MIT Lincoln Laboratory
244 Wood St.
Lexington, Massachusetts  02420-9108    (781) 981-2756


Re: plpgsql notify trigger

From
Yury Don
Date:
Hello George,

Once, Thursday, March 01, 2001, 12:30:07 AM, you wrote:

GY> [postgres 7.0.2, x86 linux]

GY> I am trying to use a trigger to perform an sql 'notify' command.
GY> I do something like:

GY> CREATE FUNCTION run_changed() RETURNS opaque AS '
GY>    declare
GY>       nm text;
GY>    begin
GY>        nm := NEW.run_name;
GY>        notify nm
GY>        return null;
GY>    end;        
GY> ' LANGUAGE 'plpgsql';

GY> create trigger run_changed_tr after update on runs for each row
GY>        execute procedure run_changed();


GY> BUT, when I update the table, I get:
GY>    ERROR:  parser: parse error at or near "$1"     

GY> It looks like the *name* (or it's alias here: $1.run_name), not the *value* of the variable nm,
GY> is passwd to the notify command.  Since notify only takes a name, not a string,
GY> I don't see how to proceed.  

GY> Is there some way in plsql to construct a string and have it executed in sql?

GY> disappointed in plsql,
GY>         George

Trigger function must return record, try "return NEW" instead of
"return null"

-- 
Best regards,Yury