evaluating values of attributes from computed attribute names in trigger function
В списке pgsql-sql по дате отправления:
| От | Markus Wagner |
|---|---|
| Тема | evaluating values of attributes from computed attribute names in trigger function |
| Дата | |
| Msg-id | 3B309CCC.2CCFA2DB@imsd.uni-mainz.de обсуждение исходный текст |
| Список | pgsql-sql |
Hi,
I need to find all changed fields in a trigger function. I found out how
to get the names of all attributes within plpgsql, but I cannot get the
value of NEW and OLD for the attribute with that name.
That is:
assume there is NEW.foo and OLD.foo
let the name 'foo' be computed and stored in variable attrname:attrname='foo'
Then, if I write NEW.attrname, it is confused with an attribute called
'attrname'.
So how can I get the changed fields in my row?
Please see my function below.
Thank you very much,
Markus
CREATE FUNCTION trg_001() RETURNS OPAQUE AS ' DECLARE rec RECORD;
BEGIN FOR rec IN SELECT a.attname AS atr FROM pg_attribute
a,pg_class c WHERE a.attrelid = c.oid AND a.attnum > 0 AND
c.relname=TG_RELNAME LOOP IF NEW.atr <> OLD.atr THEN INSERT INTO
test(txt) VALUES (rec.atr); END IF; END LOOP; RETURN NEW; END;
' LANGUAGE 'plpgsql';
В списке pgsql-sql по дате отправления:
Сайт использует файлы cookie для корректной работы и повышения удобства. Нажимая кнопку «Принять» или продолжая пользоваться сайтом, вы соглашаетесь на их использование в соответствии с Политикой в отношении обработки cookie ООО «ППГ», в том числе на передачу данных из файлов cookie сторонним статистическим и рекламным службам. Вы можете управлять настройками cookie через параметры вашего браузера