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 по дате отправления: