У меня есть триггер, который сравнивает недавно вставленную строку с предыдущей.Я взял параметр 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 )
В результате это: Старая запись: ()