Выделить всю строку данных как запись в формате NEW в postgresql - PullRequest
0 голосов
/ 25 сентября 2019

У меня есть триггер, который сравнивает недавно вставленную строку с предыдущей.Я взял параметр NEW из триггера и хотел бы сравнить его с предыдущей строкой, которая имеет некоторые из тех же значений, что и вставленная строка.Поэтому я использую следующую команду, чтобы найти связанный объект записи:

 execute 'SELECT * from table where field1=''' || new_entry.field1 || ''' and field2=''' ||
        new_entry.field2 || ''' and id < ' || new_entry.id || ' order by id DESC limit 1' into target;

Здесь new_entry - это объект NEW.Я думаю, что эта команда возвращает то же самое, что и новый объект, но это не так.Вместо этого он добавляет "" к объектам jsonb внутри.Вот сравнение объекта NEW с предыдущей записью из вышеприведенной команды:

СТАРЫЙ вход: ("(326,""2019-09-24 02:18:52.848206+00"",/somevalue/,null,7,""{""""abc"""": {""""abcd""""

НОВЫЙ вход: (353,"2019-09-25 09:20:34.088914+00",/somevalue/,null,7,"{""abc"": {""abcd"":

РЕДАКТИРОВАТЬ: Iтакже попробовал формат как это:

 SELECT format ('SELECT * INTO %I FROM table WHERE field1=%L and field=%L and id < %L ORDER BY id DESC limit 1', 'target', new_entry.field1, new_entry.field2, new_entry.id )

В результате это: Старая запись: ()

...