Dynamic fieldname with NEW structure in trigger function?

Поиск
Список
Период
Сортировка
От Erwin Brandstetter
Тема Dynamic fieldname with NEW structure in trigger function?
Дата
Msg-id 40B6A165.6030108@unet.univie.ac.at
обсуждение исходный текст
Список pgsql-hackers
Hi List!

I have discussed the following problem with pl/pgsql on irc://freenode/postgresql. <irc://freenode/postgresql>

Christopher Kings-Lynne has asked me to post the problem here as a feature request, so here goes:
I think it is best formulated in plpgsql code below.

Kris Jurka has mentioned that something like this might work with pl/tcl and pl/python.
I am not experienced with those however, so I can't comment on that



CREATE FUNCTION trg_log_up_other() RETURNS trigger  AS '
DECLARE  sql_txt text;  up_table text;  up_field text;
BEGIN  up_table := TG_ARGV[0];  up_field := TG_ARGV[1];  sql_txt := ''UPDATE ''  || quote_ident(up_table)  || '' SET
somefield= somevalue''  || '' WHERE ''  ||  quote_ident(up_field)  || '' =  ''  || NEW.staticname_id;
 
-- ^^^^^^^^^^^^^^^^^^^^^ !!! last line = EVIL HACK !!!
-- I want a dynamic name passed by TG_ARGV[2] instead of staticname_id.
-- But NEW is not known inside EXECUTE, so it throws an error and does not evaluate.
-- But how can i evaluate a dynamic field if not with EXECUTE?
-- How do i get to the value of the field?  EXECUTE sql_txt;  return NEW;
END;
'  LANGUAGE plpgsql;



Thanx for considering.
Please cc me on replies.


Regards
Erwin Brandstetter



В списке pgsql-hackers по дате отправления:

Предыдущее
От: Chris Campbell
Дата:
Сообщение: pg_dump --comment?
Следующее
От: Alvaro Herrera
Дата:
Сообщение: Re: On query rewrite