| From: | Adrian Klaver <adrian(dot)klaver(at)aklaver(dot)com> | 
|---|---|
| To: | Susan Cassidy <susan(dot)cassidy(at)decisionsciencescorp(dot)com>, "pgsql-general(at)postgresql(dot)org" <pgsql-general(at)postgresql(dot)org> | 
| Subject: | Re: another trigger problem | 
| Date: | 2014-03-07 23:06:04 | 
| Message-ID: | 531A50DC.6090102@aklaver.com | 
| Views: | Whole Thread | Raw Message | Download mbox | Resend email | 
| Thread: | |
| Lists: | pgsql-general | 
On 03/07/2014 02:48 PM, Susan Cassidy wrote:
> I have another problem with a slightly different trigger.  It's very
> weird, because it is exactly the same as the first trigger, that now
> works, except for the table name.
>
> The error is:
>
> ERROR:  query string argument of EXECUTE is null
> CONTEXT:  PL/pgSQL function metric_int_insert_func() line 5 at EXECUTE
> statement
>
>
> The trigger is:
>
> CREATE OR REPLACE FUNCTION metric_int_insert_func()
> RETURNS TRIGGER AS $$
>    DECLARE insert_sql text;
> BEGIN
>      insert_sql:='insert into metric_int_values_' ||
> to_char(NEW.datetimeval,'YYYYMM') || ' values ($1.*)';
>      EXECUTE insert_sql using NEW;
>      RETURN NULL;
> END;
> $$
> LANGUAGE plpgsql;
>
> DROP TRIGGER IF EXISTS insert_metric_int_insert_trigger on
> metric_int_values;
> CREATE TRIGGER insert_metric_int_insert_trigger
>          BEFORE INSERT ON metric_int_values
>          FOR EACH ROW EXECUTE PROCEDURE metric_int_insert_func();
>
>
> which is exactly the same as this one that works:
> CREATE OR REPLACE FUNCTION metric_double_insert_func()
> RETURNS TRIGGER AS $$
>    DECLARE insert_sql text;
> BEGIN
>      insert_sql:='insert into metric_double_values_' ||
> to_char(NEW.datetimeval,'YYYYMM') || ' values ($1.*)';
>      EXECUTE insert_sql using NEW;
>      RETURN NULL;
> END;
> $$
> LANGUAGE plpgsql;
>
> DROP TRIGGER IF EXISTS insert_metric_double_insert_trigger on
> metric_double_values;
> CREATE TRIGGER insert_metric_double_insert_trigger
>          BEFORE INSERT ON metric_double_values
>          FOR EACH ROW EXECUTE PROCEDURE metric_double_insert_func();
>
>
> I can't seem to figure it out.  I've retyped some of the lines, in case
> there is a weird character somewhere, but they got there with a vi yank
> and put, so that's not likely.
>
> Anyone have any ideas?
Try dropping the function and then creating it, instead of just the 
create and replace. I have seen issues in the past with a stale copy of 
a function causing a problem.
>
> Thanks,
> Susan
>
>
-- 
Adrian Klaver
adrian(dot)klaver(at)aklaver(dot)com
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Israel Brewster | 2014-03-07 23:10:28 | Re: Mysterious DB reset | 
| Previous Message | Susan Cassidy | 2014-03-07 22:48:59 | another trigger problem |