From: | "G(dot) Allegri" <giohappy(at)gmail(dot)com> |
---|---|
To: | Richard Huxton <dev(at)archonet(dot)com> |
Cc: | pgsql-general(at)postgresql(dot)org |
Subject: | Re: column name gets substitudes inside an execute statement of a trigger function. how to avoid it?! |
Date: | 2009-06-09 15:07:19 |
Message-ID: | e12429640906090807t12a7c7c7m68c5191ce0e74c7a@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
Great, quote_literal() solved it! It was so easy :)
Thx Richard
2009/6/9 Richard Huxton <dev(at)archonet(dot)com>:
> G. Allegri wrote:
>>
>> ERROR: Column 'lets_try' does not exist
>> LINE 1: INSERT INTO seconda (nome) VALUES ('lets_try')
>>
>> My function and trigger are:
>>
>> CREATE OR REPLACE FUNCTION fun1() RETURNS TRIGGER AS
>> $primaprova$
>> DECLARE
>> nome varchar;
>> BEGIN
>> IF (TG_OP='INSERT') THEN
>> execute 'INSERT INTO ' || NEW.table || ' (nome) VALUES( "' || NEW.nome
>> || '" );';
>
> This will give VALUES ("lets_try") which is not a valid way to quote a
> string. It *is* a valid way to quote an identifier (e.g. a column).
>
> You probably want to use the quote_literal() function anyway to escape any
> single-quotes in the value being quoted.
>
> --
> Richard Huxton
> Archonet Ltd
>
From | Date | Subject | |
---|---|---|---|
Next Message | Grzegorz Jaśkiewicz | 2009-06-09 15:08:58 | Re: limit table to one row |
Previous Message | Richard Huxton | 2009-06-09 15:04:26 | Re: column name gets substitudes inside an execute statement of a trigger function. how to avoid it?! |