Hi,

Le 2014-03-19 à 16:19, Adrian Klaver a écrit :
> On 03/19/2014 12:48 PM, François Beausoleil wrote:
>> 
>> Cross-posted from 
>> https://dba.stackexchange.com/questions/61271/how-to-access-new-or-old-field-given-only-the-fields-name
>> 
> 
> 
> Well two things:
> 
> 1)  From the above link:
> Note that parameter symbols can only be used for data values — if you want to 
> use dynamically determined table or column names, you must insert them into 
> the command string textually. For example, if the preceding query needed to 
> be done against a dynamically selected table, you could do this:

Is there an example missing here?

> So:
> 
> Instead of 'SELECT $1 '.. use 'SELECT ' || TG_ARGV[0] || ..
> 
> 2) Use NEW outside the quotes.
> 
> So:
>  'FROM ' NEW.*

That doesn't seem to work?

CREATE OR REPLACE FUNCTION validate_arrays_sum_equals_total() RETURNS TRIGGER 
AS $$
DECLARE
  total bigint;
  array_sum bigint;
BEGIN
  EXECUTE 'SELECT $1 FROM ' NEW.* INTO total USING TG_ARGV[0];
  RAISE EXCEPTION 'Total: %, social_impressions: %', total, 
NEW.social_impressions;
  RETURN NEW;
END
$$ LANGUAGE plpgsql;

psql:db/functions.sql:117: ERROR:  syntax error at or near "."
LINE 6:   EXECUTE 'SELECT $1 FROM ' NEW.* INTO total USING TG_ARGV[0...
                                       ^
Thanks,
François

Attachment: smime.p7s
Description: S/MIME cryptographic signature

Reply via email to